You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tajo.apache.org by ji...@apache.org on 2013/11/18 09:56:48 UTC
[3/3] git commit: TAJO-176: Implement Tajo JDBC Driver. (Keuntae Park
via jihoon)
TAJO-176: Implement Tajo JDBC Driver. (Keuntae Park via jihoon)
Project: http://git-wip-us.apache.org/repos/asf/incubator-tajo/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tajo/commit/342fd47f
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tajo/tree/342fd47f
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tajo/diff/342fd47f
Branch: refs/heads/master
Commit: 342fd47ffd2a30f4941256ac4a5bc95707004599
Parents: 6e2db3b
Author: Jihoon Son <ji...@apache.org>
Authored: Mon Nov 18 17:56:06 2013 +0900
Committer: Jihoon Son <ji...@apache.org>
Committed: Mon Nov 18 17:56:06 2013 +0900
----------------------------------------------------------------------
CHANGES.txt | 2 +
.../org/apache/tajo/client/ResultSetImpl.java | 2173 ------------------
.../tajo/client/ResultSetMetaDataImpl.java | 260 ---
.../java/org/apache/tajo/client/TajoClient.java | 55 +-
.../org/apache/tajo/jdbc/MetaDataTuple.java | 194 ++
.../org/apache/tajo/jdbc/TajoConnection.java | 400 ++++
.../apache/tajo/jdbc/TajoDatabaseMetaData.java | 1196 ++++++++++
.../java/org/apache/tajo/jdbc/TajoDriver.java | 233 ++
.../apache/tajo/jdbc/TajoMetaDataResultSet.java | 77 +
.../apache/tajo/jdbc/TajoPreparedStatement.java | 660 ++++++
.../org/apache/tajo/jdbc/TajoResultSet.java | 150 ++
.../org/apache/tajo/jdbc/TajoResultSetBase.java | 1129 +++++++++
.../apache/tajo/jdbc/TajoResultSetMetaData.java | 160 ++
.../org/apache/tajo/jdbc/TajoStatement.java | 289 +++
.../tajo/engine/query/TestGroupByQuery.java | 1 -
.../tajo/engine/query/TestResultSetImpl.java | 125 -
.../apache/tajo/engine/query/TestSortQuery.java | 1 -
.../org/apache/tajo/jdbc/TestResultSet.java | 126 +
.../java/org/apache/tajo/jdbc/TestTajoJdbc.java | 361 +++
.../org/apache/tajo/rpc/NettyClientBase.java | 6 +-
.../org/apache/tajo/rpc/RpcConnectionPool.java | 16 +-
.../org/apache/tajo/rpc/ServerCallable.java | 31 +-
22 files changed, 5041 insertions(+), 2604 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/342fd47f/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 00aa48d..f91d2d1 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -4,6 +4,8 @@ Release 0.2.0 - unreleased
NEW FEATURES
+ TAJO-176: Implement Tajo JDBC Driver. (Keuntae Park via jihoon)
+
TAJO-16: Enable Tajo catalog to access Hive metastore. (jaehwa)
TAJO-285: Add CREATE TABLE... BY PARTITION statement to parser. (hyunsik)
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/342fd47f/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/client/ResultSetImpl.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/client/ResultSetImpl.java b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/client/ResultSetImpl.java
deleted file mode 100644
index bfe0cdc..0000000
--- a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/client/ResultSetImpl.java
+++ /dev/null
@@ -1,2173 +0,0 @@
-/**
- * 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.
- */
-
-package org.apache.tajo.client;
-
-import com.google.common.collect.Lists;
-import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.fs.FileStatus;
-import org.apache.hadoop.fs.FileSystem;
-import org.apache.hadoop.fs.Path;
-import org.apache.hadoop.fs.PathFilter;
-import org.apache.tajo.QueryId;
-import org.apache.tajo.catalog.Schema;
-import org.apache.tajo.catalog.TableDesc;
-import org.apache.tajo.catalog.TableMeta;
-import org.apache.tajo.datum.Datum;
-import org.apache.tajo.datum.NullDatum;
-import org.apache.tajo.exception.UnsupportedException;
-import org.apache.tajo.storage.fragment.FileFragment;
-import org.apache.tajo.storage.MergeScanner;
-import org.apache.tajo.storage.Scanner;
-import org.apache.tajo.storage.Tuple;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.Reader;
-import java.math.BigDecimal;
-import java.net.URL;
-import java.sql.*;
-import java.sql.Date;
-import java.util.*;
-
-public class ResultSetImpl implements ResultSet {
- private final String cursorName = "tajo";
- private FileSystem fs;
- private Scanner scanner;
- private TableDesc desc;
- private Schema schema;
- private Tuple cur;
- private int curRow;
- private long totalRow;
- private boolean wasNull;
- private TajoClient tajoClient;
- QueryId queryId;
-
- public ResultSetImpl(TajoClient tajoClient, QueryId queryId) {
- this.tajoClient = tajoClient;
- this.queryId = queryId;
- init();
- }
-
- public ResultSetImpl(TajoClient tajoClient, QueryId queryId, Configuration conf, TableDesc desc) throws IOException {
- this.tajoClient = tajoClient;
- this.queryId = queryId;
- this.desc = desc;
- this.schema = desc.getSchema();
- if(desc != null) {
- fs = desc.getPath().getFileSystem(conf);
- this.totalRow = desc.getStats() != null ? desc.getStats().getNumRows() : 0;
- Collection<FileFragment> frags = getFragments(desc.getMeta(), desc.getPath());
- scanner = new MergeScanner(conf, schema, desc.getMeta(), frags);
- }
- init();
- }
-
- private void init() {
- cur = null;
- curRow = 0;
- }
-
- class FileNameComparator implements Comparator<FileStatus> {
-
- @Override
- public int compare(FileStatus f1, FileStatus f2) {
- return f2.getPath().getName().compareTo(f1.getPath().getName());
- }
- }
-
- private Collection<FileFragment> getFragments(TableMeta meta, Path tablePath)
- throws IOException {
- List<FileFragment> fraglist = Lists.newArrayList();
- FileStatus[] files = fs.listStatus(tablePath, new PathFilter() {
- @Override
- public boolean accept(Path path) {
- return path.getName().charAt(0) != '.';
- }
- });
- Arrays.sort(files, new FileNameComparator());
-
- String tbname = tablePath.getName();
- for (int i = 0; i < files.length; i++) {
- if (files[i].getLen() == 0) {
- continue;
- }
- fraglist.add(new FileFragment(tbname + "_" + i, files[i].getPath(), 0l, files[i].getLen()));
- }
- return fraglist;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.Wrapper#isWrapperFor(java.lang.Class)
- */
- @Override
- public boolean isWrapperFor(Class<?> arg0) throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.Wrapper#unwrap(java.lang.Class)
- */
- @Override
- public <T> T unwrap(Class<T> arg0) throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#absolute(int)
- */
- @Override
- public boolean absolute(int arg0) throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#afterLast()
- */
- @Override
- public void afterLast() throws SQLException {
- while (this.next())
- ;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#beforeFirst()
- */
- @Override
- public void beforeFirst() throws SQLException {
- try {
- if(scanner != null) {
- scanner.reset();
- }
- init();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#cancelRowUpdates()
- */
- @Override
- public void cancelRowUpdates() throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#clearWarnings()
- */
- @Override
- public void clearWarnings() throws SQLException {
- // TODO
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#close()
- */
- @Override
- public void close() throws SQLException {
- try {
- if(tajoClient != null) {
- this.tajoClient.closeQuery(queryId);
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- try {
- if(scanner != null) {
- this.scanner.close();
- }
- //TODO clean temp result file
- cur = null;
- curRow = -1;
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#deleteRow()
- */
- @Override
- public void deleteRow() throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#findColumn(java.lang.String)
- */
- @Override
- public int findColumn(String colName) throws SQLException {
- return schema.getColumnIdByName(colName);
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#first()
- */
- @Override
- public boolean first() throws SQLException {
- this.beforeFirst();
- return this.next();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#getArray(int)
- */
- @Override
- public Array getArray(int arg0) throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#getArray(java.lang.String)
- */
- @Override
- public Array getArray(String arg0) throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#getAsciiStream(int)
- */
- @Override
- public InputStream getAsciiStream(int arg0) throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#getAsciiStream(java.lang.String)
- */
- @Override
- public InputStream getAsciiStream(String arg0) throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#getBigDecimal(int)
- */
- @Override
- public BigDecimal getBigDecimal(int fieldId) throws SQLException {
- // TODO
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#getBigDecimal(java.lang.String)
- */
- @Override
- public BigDecimal getBigDecimal(String fieldName) throws SQLException {
- // TODO
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#getBigDecimal(int, int)
- */
- @Override
- public BigDecimal getBigDecimal(int arg0, int arg1) throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#getBigDecimal(java.lang.String, int)
- */
- @Override
- public BigDecimal getBigDecimal(String arg0, int arg1) throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#getBinaryStream(int)
- */
- @Override
- public InputStream getBinaryStream(int arg0) throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#getBinaryStream(java.lang.String)
- */
- @Override
- public InputStream getBinaryStream(String arg0) throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#getBlob(int)
- */
- @Override
- public Blob getBlob(int arg0) throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#getBlob(java.lang.String)
- */
- @Override
- public Blob getBlob(String arg0) throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#getBoolean(int)
- */
- @Override
- public boolean getBoolean(int fieldId) throws SQLException {
- Datum datum = cur.get(fieldId - 1);
- handleNull(datum);
- return datum.asBool();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#getBoolean(java.lang.String)
- */
- @Override
- public boolean getBoolean(String colName) throws SQLException {
- Datum datum = cur.get(findColumn(colName));
- handleNull(datum);
- return datum.asBool();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#getByte(int)
- */
- @Override
- public byte getByte(int fieldId) throws SQLException {
- Datum datum = cur.get(fieldId - 1);
- handleNull(datum);
- return datum.asByte();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#getByte(java.lang.String)
- */
- @Override
- public byte getByte(String name) throws SQLException {
- Datum datum = cur.get(findColumn(name));
- handleNull(datum);
- return datum.asByte();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#getBytes(int)
- */
- @Override
- public byte[] getBytes(int fieldId) throws SQLException {
- Datum datum = cur.get(fieldId - 1);
- handleNull(datum);
- return datum.asByteArray();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#getBytes(java.lang.String)
- */
- @Override
- public byte[] getBytes(String name) throws SQLException {
- Datum datum = cur.get(findColumn(name));
- handleNull(datum);
- return datum.asByteArray();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#getCharacterStream(int)
- */
- @Override
- public Reader getCharacterStream(int arg0) throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#getCharacterStream(java.lang.String)
- */
- @Override
- public Reader getCharacterStream(String arg0) throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#getClob(int)
- */
- @Override
- public Clob getClob(int arg0) throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#getClob(java.lang.String)
- */
- @Override
- public Clob getClob(String arg0) throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#getConcurrency()
- */
- @Override
- public int getConcurrency() throws SQLException {
- return ResultSet.CONCUR_READ_ONLY;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#getCursorName()
- */
- @Override
- public String getCursorName() throws SQLException {
- return cursorName;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#getDate(int)
- */
- @Override
- public Date getDate(int arg0) throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#getDate(java.lang.String)
- */
- @Override
- public Date getDate(String arg0) throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#getDate(int, java.util.Calendar)
- */
- @Override
- public Date getDate(int arg0, Calendar arg1) throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#getDate(java.lang.String, java.util.Calendar)
- */
- @Override
- public Date getDate(String arg0, Calendar arg1) throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#getDouble(int)
- */
- @Override
- public double getDouble(int fieldId) throws SQLException {
- Datum datum = cur.getDouble(fieldId - 1);
- handleNull(datum);
- return datum.asFloat8();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#getDouble(java.lang.String)
- */
- @Override
- public double getDouble(String name) throws SQLException {
- Datum datum = cur.get(findColumn(name));
- handleNull(datum);
- return datum.asFloat8();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#getFetchDirection()
- */
- @Override
- public int getFetchDirection() throws SQLException {
- return ResultSet.FETCH_FORWARD;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#getFetchSize()
- */
- @Override
- public int getFetchSize() throws SQLException {
- return 0;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#getFloat(int)
- */
- @Override
- public float getFloat(int fieldId) throws SQLException {
- Datum datum = cur.get(fieldId - 1);
- handleNull(datum);
- return datum.asFloat4();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#getFloat(java.lang.String)
- */
- @Override
- public float getFloat(String name) throws SQLException {
- Datum datum = cur.get(findColumn(name));
- handleNull(datum);
- return datum.asFloat4();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#getHoldability()
- */
- @Override
- public int getHoldability() throws SQLException {
- return 0;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#getInt(int)
- */
- @Override
- public int getInt(int fieldId) throws SQLException {
- Datum datum = cur.get(fieldId - 1);
- handleNull(datum);
- return datum.asInt4();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#getInt(java.lang.String)
- */
- @Override
- public int getInt(String name) throws SQLException {
- Datum datum = cur.get(findColumn(name));
- handleNull(datum);
- return datum.asInt4();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#getLong(int)
- */
- @Override
- public long getLong(int fieldId) throws SQLException {
- Datum datum = cur.get(fieldId - 1);
- handleNull(datum);
- return datum.asInt8();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#getLong(java.lang.String)
- */
- @Override
- public long getLong(String name) throws SQLException {
- Datum datum = cur.get(findColumn(name));
- handleNull(datum);
- return datum.asInt8();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#getMetaData()
- */
- @Override
- public ResultSetMetaData getMetaData() throws SQLException {
- return new ResultSetMetaDataImpl(desc);
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#getNCharacterStream(int)
- */
- @Override
- public Reader getNCharacterStream(int arg0) throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#getNCharacterStream(java.lang.String)
- */
- @Override
- public Reader getNCharacterStream(String arg0) throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#getNClob(int)
- */
- @Override
- public NClob getNClob(int arg0) throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#getNClob(java.lang.String)
- */
- @Override
- public NClob getNClob(String arg0) throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#getNString(int)
- */
- @Override
- public String getNString(int fieldId) throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#getNString(java.lang.String)
- */
- @Override
- public String getNString(String arg0) throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#getObject(int)
- */
- @Override
- public Object getObject(int fieldId) throws SQLException {
- Datum d = cur.get(fieldId - 1);
- handleNull(d);
-
- // TODO - to be changed to return Object type
- return d;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#getObject(java.lang.String)
- */
- @Override
- public Object getObject(String arg0) throws SQLException {
- Datum d = cur.get(findColumn(arg0));
- handleNull(d);
- return d;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#getObject(int, java.util.Map)
- */
- @Override
- public Object getObject(int arg0, Map<String, Class<?>> arg1)
- throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#getObject(java.lang.String, java.util.Map)
- */
- @Override
- public Object getObject(String arg0, Map<String, Class<?>> arg1)
- throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#getObject(java.lang.String, java.lang.Class)
- */
- public <T> T getObject(String arg0, Class<T> arg1)
- throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#getObject(int, java.lang.Class)
- */
- public <T> T getObject(int arg0, Class<T> arg1)
- throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#getRef(int)
- */
- @Override
- public Ref getRef(int arg0) throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#getRef(java.lang.String)
- */
- @Override
- public Ref getRef(String arg0) throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#getRow()
- */
- @Override
- public int getRow() throws SQLException {
- return curRow;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#getRowId(int)
- */
- @Override
- public RowId getRowId(int fieldId) throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#getRowId(java.lang.String)
- */
- @Override
- public RowId getRowId(String arg0) throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#getSQLXML(int)
- */
- @Override
- public SQLXML getSQLXML(int fieldId) throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#getSQLXML(java.lang.String)
- */
- @Override
- public SQLXML getSQLXML(String arg0) throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#getShort(int)
- */
- @Override
- public short getShort(int fieldId) throws SQLException {
- Datum datum = cur.get(fieldId - 1);
- handleNull(datum);
- return datum.asInt2();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#getShort(java.lang.String)
- */
- @Override
- public short getShort(String name) throws SQLException {
- Datum datum = cur.get(findColumn(name));
- handleNull(datum);
- return datum.asInt2();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#getStatement()
- */
- @Override
- public Statement getStatement() throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#getString(int)
- */
- @Override
- public String getString(int fieldId) throws SQLException {
- Datum datum = cur.get(fieldId - 1);
- handleNull(datum);
- return datum.asChars();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#getString(java.lang.String)
- */
- @Override
- public String getString(String arg0) throws SQLException {
- Datum datum = cur.get(findColumn(arg0));
- handleNull(datum);
- return datum.asChars();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#getTime(int)
- */
- @Override
- public Time getTime(int fieldId) throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#getTime(java.lang.String)
- */
- @Override
- public Time getTime(String name) throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#getTime(int, java.util.Calendar)
- */
- @Override
- public Time getTime(int fieldId, Calendar arg1) throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#getTime(java.lang.String, java.util.Calendar)
- */
- @Override
- public Time getTime(String name, Calendar arg1) throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#getTimestamp(int)
- */
- @Override
- public Timestamp getTimestamp(int fieldId) throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#getTimestamp(java.lang.String)
- */
- @Override
- public Timestamp getTimestamp(String arg0) throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#getTimestamp(int, java.util.Calendar)
- */
- @Override
- public Timestamp getTimestamp(int fieldId, Calendar arg1) throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#getTimestamp(java.lang.String, java.util.Calendar)
- */
- @Override
- public Timestamp getTimestamp(String arg0, Calendar arg1) throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#getType()
- */
- @Override
- public int getType() throws SQLException {
- return ResultSet.TYPE_FORWARD_ONLY;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#getURL(int)
- */
- @Override
- public URL getURL(int fieldId) throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#getURL(java.lang.String)
- */
- @Override
- public URL getURL(String arg0) throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#getUnicodeStream(int)
- */
- @Override
- public InputStream getUnicodeStream(int arg0) throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#getUnicodeStream(java.lang.String)
- */
- @Override
- public InputStream getUnicodeStream(String arg0) throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#getWarnings()
- */
- @Override
- public SQLWarning getWarnings() throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#insertRow()
- */
- @Override
- public void insertRow() throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#isAfterLast()
- */
- @Override
- public boolean isAfterLast() throws SQLException {
- return this.curRow > this.totalRow;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#isBeforeFirst()
- */
- @Override
- public boolean isBeforeFirst() throws SQLException {
- return this.curRow == 0;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#isClosed()
- */
- @Override
- public boolean isClosed() throws SQLException {
- return this.curRow == -1;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#isFirst()
- */
- @Override
- public boolean isFirst() throws SQLException {
- return this.curRow == 1;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#isLast()
- */
- @Override
- public boolean isLast() throws SQLException {
- return this.curRow == this.totalRow;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#last()
- */
- @Override
- public boolean last() throws SQLException {
- Tuple last = null;
- while (this.next()) {
- last = cur;
- }
- cur = last;
- return true;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#moveToCurrentRow()
- */
- @Override
- public void moveToCurrentRow() throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#moveToInsertRow()
- */
- @Override
- public void moveToInsertRow() throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#next()
- */
- @Override
- public boolean next() throws SQLException {
- if(scanner == null) {
- return false;
- }
- try {
- if (totalRow <= 0)
- return false;
-
- cur = scanner.next();
- curRow++;
- if (cur != null) {
- return true;
- }
- } catch (IOException e) {
- e.printStackTrace();
- }
- return false;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#previous()
- */
- @Override
- public boolean previous() throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#refreshRow()
- */
- @Override
- public void refreshRow() throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#relative(int)
- */
- @Override
- public boolean relative(int arg0) throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#rowDeleted()
- */
- @Override
- public boolean rowDeleted() throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#rowInserted()
- */
- @Override
- public boolean rowInserted() throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#rowUpdated()
- */
- @Override
- public boolean rowUpdated() throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#setFetchDirection(int)
- */
- @Override
- public void setFetchDirection(int arg0) throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#setFetchSize(int)
- */
- @Override
- public void setFetchSize(int arg0) throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#updateArray(int, java.sql.Array)
- */
- @Override
- public void updateArray(int arg0, Array arg1) throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#updateArray(java.lang.String, java.sql.Array)
- */
- @Override
- public void updateArray(String arg0, Array arg1) throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#updateAsciiStream(int, java.io.InputStream)
- */
- @Override
- public void updateAsciiStream(int arg0, InputStream arg1) throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#updateAsciiStream(java.lang.String,
- * java.io.InputStream)
- */
- @Override
- public void updateAsciiStream(String arg0, InputStream arg1)
- throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#updateAsciiStream(int, java.io.InputStream, int)
- */
- @Override
- public void updateAsciiStream(int arg0, InputStream arg1, int arg2)
- throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#updateAsciiStream(java.lang.String,
- * java.io.InputStream, int)
- */
- @Override
- public void updateAsciiStream(String arg0, InputStream arg1, int arg2)
- throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#updateAsciiStream(int, java.io.InputStream, long)
- */
- @Override
- public void updateAsciiStream(int arg0, InputStream arg1, long arg2)
- throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#updateAsciiStream(java.lang.String,
- * java.io.InputStream, long)
- */
- @Override
- public void updateAsciiStream(String arg0, InputStream arg1, long arg2)
- throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#updateBigDecimal(int, java.math.BigDecimal)
- */
- @Override
- public void updateBigDecimal(int arg0, BigDecimal arg1) throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#updateBigDecimal(java.lang.String,
- * java.math.BigDecimal)
- */
- @Override
- public void updateBigDecimal(String arg0, BigDecimal arg1)
- throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#updateBinaryStream(int, java.io.InputStream)
- */
- @Override
- public void updateBinaryStream(int arg0, InputStream arg1)
- throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#updateBinaryStream(java.lang.String,
- * java.io.InputStream)
- */
- @Override
- public void updateBinaryStream(String arg0, InputStream arg1)
- throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#updateBinaryStream(int, java.io.InputStream, int)
- */
- @Override
- public void updateBinaryStream(int arg0, InputStream arg1, int arg2)
- throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#updateBinaryStream(java.lang.String,
- * java.io.InputStream, int)
- */
- @Override
- public void updateBinaryStream(String arg0, InputStream arg1, int arg2)
- throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#updateBinaryStream(int, java.io.InputStream, long)
- */
- @Override
- public void updateBinaryStream(int arg0, InputStream arg1, long arg2)
- throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#updateBinaryStream(java.lang.String,
- * java.io.InputStream, long)
- */
- @Override
- public void updateBinaryStream(String arg0, InputStream arg1, long arg2)
- throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#updateBlob(int, java.sql.Blob)
- */
- @Override
- public void updateBlob(int arg0, Blob arg1) throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#updateBlob(java.lang.String, java.sql.Blob)
- */
- @Override
- public void updateBlob(String arg0, Blob arg1) throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#updateBlob(int, java.io.InputStream)
- */
- @Override
- public void updateBlob(int arg0, InputStream arg1) throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#updateBlob(java.lang.String, java.io.InputStream)
- */
- @Override
- public void updateBlob(String arg0, InputStream arg1) throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#updateBlob(int, java.io.InputStream, long)
- */
- @Override
- public void updateBlob(int arg0, InputStream arg1, long arg2)
- throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#updateBlob(java.lang.String, java.io.InputStream,
- * long)
- */
- @Override
- public void updateBlob(String arg0, InputStream arg1, long arg2)
- throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#updateBoolean(int, boolean)
- */
- @Override
- public void updateBoolean(int arg0, boolean arg1) throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#updateBoolean(java.lang.String, boolean)
- */
- @Override
- public void updateBoolean(String arg0, boolean arg1) throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#updateByte(int, byte)
- */
- @Override
- public void updateByte(int arg0, byte arg1) throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#updateByte(java.lang.String, byte)
- */
- @Override
- public void updateByte(String arg0, byte arg1) throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#updateBytes(int, byte[])
- */
- @Override
- public void updateBytes(int arg0, byte[] arg1) throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#updateBytes(java.lang.String, byte[])
- */
- @Override
- public void updateBytes(String arg0, byte[] arg1) throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#updateCharacterStream(int, java.io.Reader)
- */
- @Override
- public void updateCharacterStream(int arg0, Reader arg1) throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#updateCharacterStream(java.lang.String,
- * java.io.Reader)
- */
- @Override
- public void updateCharacterStream(String arg0, Reader arg1)
- throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#updateCharacterStream(int, java.io.Reader, int)
- */
- @Override
- public void updateCharacterStream(int arg0, Reader arg1, int arg2)
- throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#updateCharacterStream(java.lang.String,
- * java.io.Reader, int)
- */
- @Override
- public void updateCharacterStream(String arg0, Reader arg1, int arg2)
- throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#updateCharacterStream(int, java.io.Reader, long)
- */
- @Override
- public void updateCharacterStream(int arg0, Reader arg1, long arg2)
- throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#updateCharacterStream(java.lang.String,
- * java.io.Reader, long)
- */
- @Override
- public void updateCharacterStream(String arg0, Reader arg1, long arg2)
- throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#updateClob(int, java.sql.Clob)
- */
- @Override
- public void updateClob(int arg0, Clob arg1) throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#updateClob(java.lang.String, java.sql.Clob)
- */
- @Override
- public void updateClob(String arg0, Clob arg1) throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#updateClob(int, java.io.Reader)
- */
- @Override
- public void updateClob(int arg0, Reader arg1) throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#updateClob(java.lang.String, java.io.Reader)
- */
- @Override
- public void updateClob(String arg0, Reader arg1) throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#updateClob(int, java.io.Reader, long)
- */
- @Override
- public void updateClob(int arg0, Reader arg1, long arg2) throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#updateClob(java.lang.String, java.io.Reader, long)
- */
- @Override
- public void updateClob(String arg0, Reader arg1, long arg2)
- throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#updateDate(int, java.sql.Date)
- */
- @Override
- public void updateDate(int arg0, Date arg1) throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#updateDate(java.lang.String, java.sql.Date)
- */
- @Override
- public void updateDate(String arg0, Date arg1) throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#updateDouble(int, double)
- */
- @Override
- public void updateDouble(int arg0, double arg1) throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#updateDouble(java.lang.String, double)
- */
- @Override
- public void updateDouble(String arg0, double arg1) throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#updateFloat(int, float)
- */
- @Override
- public void updateFloat(int arg0, float arg1) throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#updateFloat(java.lang.String, float)
- */
- @Override
- public void updateFloat(String arg0, float arg1) throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#updateInt(int, int)
- */
- @Override
- public void updateInt(int arg0, int arg1) throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#updateInt(java.lang.String, int)
- */
- @Override
- public void updateInt(String arg0, int arg1) throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#updateLong(int, long)
- */
- @Override
- public void updateLong(int arg0, long arg1) throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#updateLong(java.lang.String, long)
- */
- @Override
- public void updateLong(String arg0, long arg1) throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#updateNCharacterStream(int, java.io.Reader)
- */
- @Override
- public void updateNCharacterStream(int arg0, Reader arg1) throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#updateNCharacterStream(java.lang.String,
- * java.io.Reader)
- */
- @Override
- public void updateNCharacterStream(String arg0, Reader arg1)
- throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#updateNCharacterStream(int, java.io.Reader, long)
- */
- @Override
- public void updateNCharacterStream(int arg0, Reader arg1, long arg2)
- throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#updateNCharacterStream(java.lang.String,
- * java.io.Reader, long)
- */
- @Override
- public void updateNCharacterStream(String arg0, Reader arg1, long arg2)
- throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#updateNClob(int, java.sql.NClob)
- */
- @Override
- public void updateNClob(int arg0, NClob arg1) throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#updateNClob(java.lang.String, java.sql.NClob)
- */
- @Override
- public void updateNClob(String arg0, NClob arg1) throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#updateNClob(int, java.io.Reader)
- */
- @Override
- public void updateNClob(int arg0, Reader arg1) throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#updateNClob(java.lang.String, java.io.Reader)
- */
- @Override
- public void updateNClob(String arg0, Reader arg1) throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#updateNClob(int, java.io.Reader, long)
- */
- @Override
- public void updateNClob(int arg0, Reader arg1, long arg2) throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#updateNClob(java.lang.String, java.io.Reader, long)
- */
- @Override
- public void updateNClob(String arg0, Reader arg1, long arg2)
- throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#updateNString(int, java.lang.String)
- */
- @Override
- public void updateNString(int arg0, String arg1) throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#updateNString(java.lang.String, java.lang.String)
- */
- @Override
- public void updateNString(String arg0, String arg1) throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#updateNull(int)
- */
- @Override
- public void updateNull(int arg0) throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#updateNull(java.lang.String)
- */
- @Override
- public void updateNull(String arg0) throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#updateObject(int, java.lang.Object)
- */
- @Override
- public void updateObject(int arg0, Object arg1) throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#updateObject(java.lang.String, java.lang.Object)
- */
- @Override
- public void updateObject(String arg0, Object arg1) throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#updateObject(int, java.lang.Object, int)
- */
- @Override
- public void updateObject(int arg0, Object arg1, int arg2) throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#updateObject(java.lang.String, java.lang.Object,
- * int)
- */
- @Override
- public void updateObject(String arg0, Object arg1, int arg2)
- throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#updateRef(int, java.sql.Ref)
- */
- @Override
- public void updateRef(int arg0, Ref arg1) throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#updateRef(java.lang.String, java.sql.Ref)
- */
- @Override
- public void updateRef(String arg0, Ref arg1) throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#updateRow()
- */
- @Override
- public void updateRow() throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#updateRowId(int, java.sql.RowId)
- */
- @Override
- public void updateRowId(int arg0, RowId arg1) throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#updateRowId(java.lang.String, java.sql.RowId)
- */
- @Override
- public void updateRowId(String arg0, RowId arg1) throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#updateSQLXML(int, java.sql.SQLXML)
- */
- @Override
- public void updateSQLXML(int arg0, SQLXML arg1) throws SQLException {
- throw new UnsupportedException();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#updateSQLXML(java.lang.String, java.sql.SQLXML)
- */
- @Override
- public void updateSQLXML(String arg0, SQLXML arg1) throws SQLException {
- throw new UnsupportedException();
-
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#updateShort(int, short)
- */
- @Override
- public void updateShort(int arg0, short arg1) throws SQLException {
- throw new UnsupportedException();
-
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#updateShort(java.lang.String, short)
- */
- @Override
- public void updateShort(String arg0, short arg1) throws SQLException {
- throw new UnsupportedException();
-
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#updateString(int, java.lang.String)
- */
- @Override
- public void updateString(int arg0, String arg1) throws SQLException {
- throw new UnsupportedException();
-
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#updateString(java.lang.String, java.lang.String)
- */
- @Override
- public void updateString(String arg0, String arg1) throws SQLException {
- throw new UnsupportedException();
-
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#updateTime(int, java.sql.Time)
- */
- @Override
- public void updateTime(int arg0, Time arg1) throws SQLException {
- throw new UnsupportedException();
-
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#updateTime(java.lang.String, java.sql.Time)
- */
- @Override
- public void updateTime(String arg0, Time arg1) throws SQLException {
- throw new UnsupportedException();
-
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#updateTimestamp(int, java.sql.Timestamp)
- */
- @Override
- public void updateTimestamp(int arg0, Timestamp arg1) throws SQLException {
- throw new UnsupportedException();
-
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#updateTimestamp(java.lang.String,
- * java.sql.Timestamp)
- */
- @Override
- public void updateTimestamp(String arg0, Timestamp arg1) throws SQLException {
- throw new UnsupportedException();
-
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.sql.ResultSet#wasNull()
- */
- @Override
- public boolean wasNull() throws SQLException {
- return wasNull;
- }
-
- private void handleNull(Datum d) {
- wasNull = (d instanceof NullDatum);
- }
-
- public boolean hasResult() {
- return scanner != null;
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/342fd47f/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/client/ResultSetMetaDataImpl.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/client/ResultSetMetaDataImpl.java b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/client/ResultSetMetaDataImpl.java
deleted file mode 100644
index 6e2d6e9..0000000
--- a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/client/ResultSetMetaDataImpl.java
+++ /dev/null
@@ -1,260 +0,0 @@
-/**
- * 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.
- */
-
-/**
- *
- */
-package org.apache.tajo.client;
-
-import org.apache.tajo.catalog.TableDesc;
-import org.apache.tajo.common.TajoDataTypes.DataType;
-import org.apache.tajo.exception.UnsupportedException;
-
-import java.nio.channels.UnsupportedAddressTypeException;
-import java.sql.ResultSetMetaData;
-import java.sql.SQLException;
-import java.sql.Types;
-
-public class ResultSetMetaDataImpl implements ResultSetMetaData {
- private TableDesc desc;
-
-
- public ResultSetMetaDataImpl(TableDesc desc) {
- this.desc = desc;
- }
-
- /* (non-Javadoc)
- * @see java.sql.Wrapper#isWrapperFor(java.lang.Class)
- */
- @Override
- public boolean isWrapperFor(Class<?> arg0) throws SQLException {
- throw new UnsupportedAddressTypeException();
- }
-
- /* (non-Javadoc)
- * @see java.sql.Wrapper#unwrap(java.lang.Class)
- */
- @Override
- public <T> T unwrap(Class<T> arg0) throws SQLException {
- throw new UnsupportedAddressTypeException();
- }
-
- /* (non-Javadoc)
- * @see java.sql.ResultSetMetaData#getCatalogName(int)
- */
- @Override
- public String getCatalogName(int column) throws SQLException {
- // TODO Auto-generated method stub
- throw new UnsupportedAddressTypeException();
- }
-
- /* (non-Javadoc)
- * @see java.sql.ResultSetMetaData#getColumnClassName(int)
- */
- @Override
- public String getColumnClassName(int column) throws SQLException {
- return desc.getSchema().getColumn(column - 1).getClass().getName();
- }
-
- /* (non-Javadoc)
- * @see java.sql.ResultSetMetaData#getColumnCount()
- */
- @Override
- public int getColumnCount() throws SQLException {
- return desc.getSchema().getColumnNum();
- }
-
- /* (non-Javadoc)
- * @see java.sql.ResultSetMetaData#getColumnDisplaySize(int)
- */
- @Override
- public int getColumnDisplaySize(int column) throws SQLException {
- throw new UnsupportedAddressTypeException();
- }
-
- /* (non-Javadoc)
- * @see java.sql.ResultSetMetaData#getColumnLabel(int)
- */
- @Override
- public String getColumnLabel(int column) throws SQLException {
- return desc.getSchema().getColumn(column - 1).getQualifiedName();
- }
-
- /* (non-Javadoc)
- * @see java.sql.ResultSetMetaData#getColumnName(int)
- */
- @Override
- public String getColumnName(int column) throws SQLException {
- return desc.getSchema().getColumn(column - 1).getColumnName();
- }
-
- /* (non-Javadoc)
- * @see java.sql.ResultSetMetaData#getColumnType(int)
- */
- @Override
- public int getColumnType(int column) throws SQLException {
- // TODO
- DataType type = desc.getSchema().getColumn(column - 1).getDataType();
- switch (type.getType()) {
- case BOOLEAN:
- return Types.BOOLEAN;
- case INT1:
- return Types.TINYINT;
- case INT2:
- return Types.SMALLINT;
- case INT4:
- return Types.INTEGER;
- case INT8:
- return Types.BIGINT;
- case FLOAT4:
- return Types.FLOAT;
- case FLOAT8:
- return Types.DOUBLE;
- case DECIMAL:
- return Types.DECIMAL;
- case VARBINARY:
- return Types.VARBINARY;
- case CHAR:
- return Types.CHAR;
- case DATE:
- return Types.DATE;
- case VARCHAR:
- return Types.VARCHAR;
- case TEXT:
- return Types.VARCHAR;
- default:
- throw new UnsupportedException();
- }
- }
-
- /* (non-Javadoc)
- * @see java.sql.ResultSetMetaData#getColumnTypeName(int)
- */
- @Override
- public String getColumnTypeName(int column) throws SQLException {
- return desc.getSchema().getColumn(column - 1).
- getDataType().getClass().getCanonicalName();
- }
-
- /* (non-Javadoc)
- * @see java.sql.ResultSetMetaData#getPrecision(int)
- */
- @Override
- public int getPrecision(int column) throws SQLException {
- throw new UnsupportedAddressTypeException();
- }
-
- /* (non-Javadoc)
- * @see java.sql.ResultSetMetaData#getScale(int)
- */
- @Override
- public int getScale(int column) throws SQLException {
- throw new UnsupportedAddressTypeException();
- }
-
- /* (non-Javadoc)
- * @see java.sql.ResultSetMetaData#getSchemaName(int)
- */
- @Override
- public String getSchemaName(int column) throws SQLException {
- throw new UnsupportedAddressTypeException();
- }
-
- /* (non-Javadoc)
- * @see java.sql.ResultSetMetaData#getTableName(int)
- */
- @Override
- public String getTableName(int column) throws SQLException {
- return desc.getSchema().getColumn(column - 1).getQualifier();
- }
-
- /* (non-Javadoc)
- * @see java.sql.ResultSetMetaData#isAutoIncrement(int)
- */
- @Override
- public boolean isAutoIncrement(int column) throws SQLException {
- return false;
- }
-
- /* (non-Javadoc)
- * @see java.sql.ResultSetMetaData#isCaseSensitive(int)
- */
- @Override
- public boolean isCaseSensitive(int column) throws SQLException {
- return false;
- }
-
- /* (non-Javadoc)
- * @see java.sql.ResultSetMetaData#isCurrency(int)
- */
- @Override
- public boolean isCurrency(int column) throws SQLException {
- throw new UnsupportedAddressTypeException();
- }
-
- /* (non-Javadoc)
- * @see java.sql.ResultSetMetaData#isDefinitelyWritable(int)
- */
- @Override
- public boolean isDefinitelyWritable(int column) throws SQLException {
- return false;
- }
-
- /* (non-Javadoc)
- * @see java.sql.ResultSetMetaData#isNullable(int)
- */
- @Override
- public int isNullable(int column) throws SQLException {
- // TODO Auto-generated method stub
- throw new UnsupportedAddressTypeException();
- }
-
- /* (non-Javadoc)
- * @see java.sql.ResultSetMetaData#isReadOnly(int)
- */
- @Override
- public boolean isReadOnly(int column) throws SQLException {
- return true;
- }
-
- /* (non-Javadoc)
- * @see java.sql.ResultSetMetaData#isSearchable(int)
- */
- @Override
- public boolean isSearchable(int column) throws SQLException {
- // TODO
- return true;
- }
-
- /* (non-Javadoc)
- * @see java.sql.ResultSetMetaData#isSigned(int)
- */
- @Override
- public boolean isSigned(int column) throws SQLException {
- // TODO Auto-generated method stub
- throw new UnsupportedAddressTypeException();
- }
-
- /* (non-Javadoc)
- * @see java.sql.ResultSetMetaData#isWritable(int)
- */
- @Override
- public boolean isWritable(int column) throws SQLException {
- return false;
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/342fd47f/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/client/TajoClient.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/client/TajoClient.java b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/client/TajoClient.java
index 7e8aee0..91a8196 100644
--- a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/client/TajoClient.java
+++ b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/client/TajoClient.java
@@ -37,6 +37,7 @@ import org.apache.tajo.ipc.QueryMasterClientProtocol;
import org.apache.tajo.ipc.QueryMasterClientProtocol.QueryMasterClientProtocolService;
import org.apache.tajo.ipc.TajoMasterClientProtocol;
import org.apache.tajo.ipc.TajoMasterClientProtocol.TajoMasterClientProtocolService;
+import org.apache.tajo.jdbc.TajoResultSet;
import org.apache.tajo.rpc.*;
import org.apache.tajo.rpc.protocolrecords.PrimitiveProtos.StringProto;
import org.apache.tajo.util.NetUtils;
@@ -83,9 +84,16 @@ public class TajoClient {
}
public void close() {
+ if(connPool != null) {
+ connPool.close();
+ }
queryMasterMap.clear();
}
+ public TajoConf getConf() {
+ return conf;
+ }
+
/**
* Call to QueryMaster closing query resources
* @param queryId
@@ -98,11 +106,9 @@ public class TajoClient {
QueryMasterClientProtocolService.BlockingInterface queryMasterService = qmClient.getStub();
queryMasterService.killQuery(null, queryId.getProto());
} catch (Exception e) {
- connPool.closeConnection(qmClient);
- qmClient = null;
LOG.warn("Fail to close a QueryMaster connection (qid=" + queryId + ", msg=" + e.getMessage() + ")", e);
} finally {
- connPool.releaseConnection(qmClient);
+ connPool.closeConnection(qmClient);
queryMasterMap.remove(queryId);
}
}
@@ -116,7 +122,7 @@ public class TajoClient {
*/
public GetQueryStatusResponse executeQuery(final String sql) throws ServiceException {
return new ServerCallable<GetQueryStatusResponse>(conf, tajoMasterAddr,
- TajoMasterClientProtocol.class, false) {
+ TajoMasterClientProtocol.class, false, true) {
public GetQueryStatusResponse call(NettyClientBase client) throws ServiceException {
final QueryRequest.Builder builder = QueryRequest.newBuilder();
builder.setQuery(sql);
@@ -138,7 +144,7 @@ public class TajoClient {
public ResultSet executeQueryAndGetResult(final String sql)
throws ServiceException, IOException {
GetQueryStatusResponse response = new ServerCallable<GetQueryStatusResponse>(conf, tajoMasterAddr,
- TajoMasterClientProtocol.class, false) {
+ TajoMasterClientProtocol.class, false, true) {
public GetQueryStatusResponse call(NettyClientBase client) throws ServiceException {
final QueryRequest.Builder builder = QueryRequest.newBuilder();
builder.setQuery(sql);
@@ -170,11 +176,9 @@ public class TajoClient {
QueryMasterClientProtocolService.BlockingInterface queryMasterService = qmClient.getStub();
res = queryMasterService.getQueryStatus(null, builder.build());
} catch (Exception e) {
- connPool.closeConnection(qmClient);
- qmClient = null;
throw new ServiceException(e.getMessage(), e);
} finally {
- connPool.releaseConnection(qmClient);
+ connPool.closeConnection(qmClient);
}
} else {
NettyClientBase tmClient = null;
@@ -196,19 +200,15 @@ public class TajoClient {
queryMasterMap.put(queryId, qmAddr);
} catch (Exception e) {
- connPool.closeConnection(qmClient);
- qmClient = null;
throw new ServiceException(e.getMessage(), e);
} finally {
- connPool.releaseConnection(qmClient);
+ connPool.closeConnection(qmClient);
}
}
} catch (Exception e) {
- connPool.closeConnection(tmClient);
- tmClient = null;
throw new ServiceException(e.getMessage(), e);
} finally {
- connPool.releaseConnection(tmClient);
+ connPool.closeConnection(tmClient);
}
}
return new QueryStatus(res);
@@ -228,9 +228,8 @@ public class TajoClient {
if (queryId.equals(QueryIdFactory.NULL_QUERY_ID)) {
return createNullResultSet(queryId);
}
-
TableDesc tableDesc = getResultDesc(queryId);
- return new ResultSetImpl(this, queryId, conf, tableDesc);
+ return new TajoResultSet(this, queryId, conf, tableDesc);
}
public ResultSet getQueryResultAndWait(QueryId queryId)
@@ -266,7 +265,7 @@ public class TajoClient {
}
public ResultSet createNullResultSet(QueryId queryId) throws IOException {
- return new ResultSetImpl(this, queryId);
+ return new TajoResultSet(this, queryId);
}
public TableDesc getResultDesc(QueryId queryId) throws ServiceException {
@@ -290,17 +289,15 @@ public class TajoClient {
return CatalogUtil.newTableDesc(response.getTableDesc());
} catch (Exception e) {
- connPool.closeConnection(client);
- client = null;
throw new ServiceException(e.getMessage(), e);
} finally {
- connPool.releaseConnection(client);
+ connPool.closeConnection(client);
}
}
public boolean updateQuery(final String sql) throws ServiceException {
return new ServerCallable<Boolean>(conf, tajoMasterAddr,
- TajoMasterClientProtocol.class, false) {
+ TajoMasterClientProtocol.class, false, true) {
public Boolean call(NettyClientBase client) throws ServiceException {
QueryRequest.Builder builder = QueryRequest.newBuilder();
builder.setQuery(sql);
@@ -323,7 +320,7 @@ public class TajoClient {
*/
public boolean existTable(final String name) throws ServiceException {
return new ServerCallable<Boolean>(conf, tajoMasterAddr,
- TajoMasterClientProtocol.class, false) {
+ TajoMasterClientProtocol.class, false, true) {
public Boolean call(NettyClientBase client) throws ServiceException {
StringProto.Builder builder = StringProto.newBuilder();
builder.setValue(name);
@@ -342,7 +339,7 @@ public class TajoClient {
*/
public boolean detachTable(final String tableName) throws ServiceException {
return new ServerCallable<Boolean>(conf, tajoMasterAddr,
- TajoMasterClientProtocol.class, false) {
+ TajoMasterClientProtocol.class, false, true) {
public Boolean call(NettyClientBase client) throws ServiceException {
TajoMasterClientProtocolService.BlockingInterface tajoMasterService = client.getStub();
@@ -356,7 +353,7 @@ public class TajoClient {
public TableDesc createExternalTable(final String name, final Schema schema, final Path path, final TableMeta meta)
throws SQLException, ServiceException {
return new ServerCallable<TableDesc>(conf, tajoMasterAddr,
- TajoMasterClientProtocol.class, false) {
+ TajoMasterClientProtocol.class, false, true) {
public TableDesc call(NettyClientBase client) throws ServiceException, SQLException {
TajoMasterClientProtocolService.BlockingInterface tajoMasterService = client.getStub();
@@ -383,7 +380,7 @@ public class TajoClient {
*/
public boolean dropTable(final String tableName) throws ServiceException {
return new ServerCallable<Boolean>(conf, tajoMasterAddr,
- TajoMasterClientProtocol.class, false) {
+ TajoMasterClientProtocol.class, false, true) {
public Boolean call(NettyClientBase client) throws ServiceException {
TajoMasterClientProtocolService.BlockingInterface tajoMasterService = client.getStub();
@@ -401,7 +398,7 @@ public class TajoClient {
*/
public List<String> getTableList() throws ServiceException {
return new ServerCallable<List<String>>(conf, tajoMasterAddr,
- TajoMasterClientProtocol.class, false) {
+ TajoMasterClientProtocol.class, false, true) {
public List<String> call(NettyClientBase client) throws ServiceException {
TajoMasterClientProtocolService.BlockingInterface tajoMasterService = client.getStub();
@@ -414,7 +411,7 @@ public class TajoClient {
public TableDesc getTableDesc(final String tableName) throws SQLException, ServiceException {
return new ServerCallable<TableDesc>(conf, tajoMasterAddr,
- TajoMasterClientProtocol.class, false) {
+ TajoMasterClientProtocol.class, false, true) {
public TableDesc call(NettyClientBase client) throws ServiceException, SQLException {
TajoMasterClientProtocolService.BlockingInterface tajoMasterService = client.getStub();
@@ -456,12 +453,10 @@ public class TajoClient {
status = getQueryStatus(queryId);
}
} catch(Exception e) {
- connPool.closeConnection(tmClient);
- tmClient = null;
LOG.debug("Error when checking for application status", e);
return false;
} finally {
- connPool.releaseConnection(tmClient);
+ connPool.closeConnection(tmClient);
}
return true;
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/342fd47f/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/jdbc/MetaDataTuple.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/jdbc/MetaDataTuple.java b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/jdbc/MetaDataTuple.java
new file mode 100644
index 0000000..789f761
--- /dev/null
+++ b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/jdbc/MetaDataTuple.java
@@ -0,0 +1,194 @@
+/**
+ * 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.
+ */
+
+package org.apache.tajo.jdbc;
+
+import org.apache.tajo.datum.*;
+import org.apache.tajo.exception.UnsupportedException;
+import org.apache.tajo.storage.Tuple;
+
+import java.net.InetAddress;
+import java.util.ArrayList;
+import java.util.List;
+
+public class MetaDataTuple implements Tuple {
+ List<Datum> values = new ArrayList<Datum>();
+
+ public MetaDataTuple(int size) {
+ values = new ArrayList<Datum>(size);
+ for(int i = 0; i < size; i++) {
+ values.add(NullDatum.get());
+ }
+ }
+
+ @Override
+ public int size() {
+ return values.size();
+ }
+
+ @Override
+ public boolean contains(int fieldid) {
+ return false;
+ }
+
+ @Override
+ public boolean isNull(int fieldid) {
+ return values.get(fieldid) == null || values.get(fieldid) instanceof NullDatum;
+ }
+
+ @Override
+ public void clear() {
+ values.clear();
+ }
+
+ @Override
+ public void put(int fieldId, Datum value) {
+ values.set(fieldId, value);
+ }
+
+ @Override
+ public void put(int fieldId, Datum[] values) {
+ throw new UnsupportedException("put");
+ }
+
+ @Override
+ public void put(int fieldId, Tuple tuple) {
+ throw new UnsupportedException("put");
+ }
+
+ @Override
+ public void put(Datum[] values) {
+ throw new UnsupportedException("put");
+ }
+
+ @Override
+ public Datum get(int fieldId) {
+ return getText(fieldId);
+ }
+
+ @Override
+ public void setOffset(long offset) {
+ throw new UnsupportedException("setOffset");
+ }
+
+ @Override
+ public long getOffset() {
+ throw new UnsupportedException("getOffset");
+ }
+
+ @Override
+ public BooleanDatum getBoolean(int fieldId) {
+ throw new UnsupportedException("getBoolean");
+ }
+
+ @Override
+ public BitDatum getByte(int fieldId) {
+ throw new UnsupportedException("getByte");
+ }
+
+ @Override
+ public CharDatum getChar(int fieldId) {
+ throw new UnsupportedException("getBoolean");
+ }
+
+ @Override
+ public BlobDatum getBytes(int fieldId) {
+ throw new UnsupportedException("BlobDatum");
+ }
+
+ @Override
+ public Int2Datum getShort(int fieldId) {
+ if(isNull(fieldId)) {
+ return null;
+ }
+ return new Int2Datum((short)Integer.parseInt(values.get(fieldId).toString()));
+ }
+
+ @Override
+ public Int4Datum getInt(int fieldId) {
+ if(isNull(fieldId)) {
+ return null;
+ }
+ return new Int4Datum(Integer.parseInt(values.get(fieldId).toString()));
+ }
+
+ @Override
+ public Int8Datum getLong(int fieldId) {
+ if(isNull(fieldId)) {
+ return null;
+ }
+ return new Int8Datum(Long.parseLong(values.get(fieldId).toString()));
+ }
+
+ @Override
+ public Float4Datum getFloat(int fieldId) {
+ if(isNull(fieldId)) {
+ return null;
+ }
+ return new Float4Datum(Float.parseFloat(values.get(fieldId).toString()));
+ }
+
+ @Override
+ public Float8Datum getDouble(int fieldId) {
+ if(isNull(fieldId)) {
+ return null;
+ }
+ return new Float8Datum(Float.parseFloat(values.get(fieldId).toString()));
+ }
+
+ @Override
+ public Inet4Datum getIPv4(int fieldId) {
+ throw new UnsupportedException("getIPv4");
+ }
+
+ @Override
+ public byte[] getIPv4Bytes(int fieldId) {
+ throw new UnsupportedException("getIPv4Bytes");
+ }
+
+ @Override
+ public InetAddress getIPv6(int fieldId) {
+ throw new UnsupportedException("getIPv6");
+ }
+
+ @Override
+ public byte[] getIPv6Bytes(int fieldId) {
+ throw new UnsupportedException("getIPv6Bytes");
+ }
+
+ @Override
+ public TextDatum getString(int fieldId) {
+ if(isNull(fieldId)) {
+ return null;
+ }
+ return new TextDatum(values.get(fieldId).toString());
+ }
+
+ @Override
+ public TextDatum getText(int fieldId) {
+ if(isNull(fieldId)) {
+ return null;
+ }
+ return new TextDatum(values.get(fieldId).toString());
+ }
+
+ @Override
+ public Tuple clone() throws CloneNotSupportedException {
+ throw new UnsupportedException("clone");
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/342fd47f/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/jdbc/TajoConnection.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/jdbc/TajoConnection.java b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/jdbc/TajoConnection.java
new file mode 100644
index 0000000..47c88d1
--- /dev/null
+++ b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/jdbc/TajoConnection.java
@@ -0,0 +1,400 @@
+/**
+ * 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.
+ */
+
+package org.apache.tajo.jdbc;
+
+import org.apache.tajo.client.TajoClient;
+import org.apache.tajo.conf.TajoConf;
+
+import java.sql.*;
+import java.util.Map;
+import java.util.Properties;
+import java.util.concurrent.Executor;
+import java.util.concurrent.atomic.AtomicBoolean;
+
+public class TajoConnection implements Connection {
+ private TajoClient tajoClient;
+
+ private String databaseName;
+
+ private AtomicBoolean closed = new AtomicBoolean(true);
+
+ private String uri;
+
+ public TajoConnection(String uri, Properties properties) throws SQLException {
+ if (!uri.startsWith(TajoDriver.TAJO_JDBC_URL_PREFIX)) {
+ throw new SQLException("Invalid URL: " + uri, "TAJO-001");
+ }
+
+ this.uri = uri;
+
+ // remove prefix
+ uri = uri.substring(TajoDriver.TAJO_JDBC_URL_PREFIX.length());
+
+
+ if (uri.isEmpty()) {
+ throw new SQLException("Invalid URL: " + uri, "TAJO-001");
+ }
+
+ // parse uri
+ // form: hostname:port/databasename
+ String[] parts = uri.split("/");
+ if(parts.length == 0 || parts[0].trim().isEmpty()) {
+ throw new SQLException("Invalid URL(No tajo master's host:port): " + uri, "TAJO-001");
+ }
+ String[] hostAndPort = parts[0].trim().split(":");
+ String host = hostAndPort[0];
+ int port = 0;
+ try {
+ port = Integer.parseInt(hostAndPort[1]);
+ } catch (Exception e) {
+ throw new SQLException("Invalid URL(Wrong tajo master's host:port): " + uri, "TAJO-001");
+ }
+
+ if(parts.length > 1) {
+ String[] tokens = parts[1].split("\\?");
+ databaseName = tokens[0].trim();
+ if(tokens.length > 1) {
+ String[] extraParamTokens = tokens[1].split("&");
+ for(String eachExtraParam: extraParamTokens) {
+ String[] paramTokens = eachExtraParam.split("=");
+ String extraParamKey = paramTokens[0];
+ String extraParamValue = paramTokens[1];
+ }
+ }
+ }
+
+ TajoConf tajoConf = new TajoConf();
+
+ tajoConf.setVar(TajoConf.ConfVars.TAJO_MASTER_CLIENT_RPC_ADDRESS, host + ":" + port);
+
+ if(properties != null) {
+ for(Map.Entry<Object, Object> entry: properties.entrySet()) {
+ tajoConf.set(entry.getKey().toString(), entry.getValue().toString());
+ }
+ }
+
+ try {
+ tajoClient = new TajoClient(tajoConf);
+ } catch (Exception e) {
+ throw new SQLException("Can't create tajo client:" + e.getMessage(), "TAJO-002");
+ }
+ closed.set(false);
+ }
+
+ public String getUri() {
+ return uri;
+ }
+
+ public TajoClient getTajoClient() {
+ return tajoClient;
+ }
+
+ @Override
+ public void clearWarnings() throws SQLException {
+ }
+
+ @Override
+ public void close() throws SQLException {
+ if(!closed.get()) {
+ if(tajoClient != null) {
+ tajoClient.close();
+ }
+
+ closed.set(true);
+ }
+ }
+
+ @Override
+ public void commit() throws SQLException {
+ throw new SQLFeatureNotSupportedException("commit");
+ }
+
+ @Override
+ public Array createArrayOf(String arg0, Object[] arg1) throws SQLException {
+ throw new SQLFeatureNotSupportedException("createArrayOf");
+ }
+
+ @Override
+ public Blob createBlob() throws SQLException {
+ throw new SQLFeatureNotSupportedException("createBlob");
+ }
+
+ @Override
+ public Clob createClob() throws SQLException {
+ throw new SQLFeatureNotSupportedException("createClob");
+ }
+
+ @Override
+ public NClob createNClob() throws SQLException {
+ throw new SQLFeatureNotSupportedException("createNClob");
+ }
+
+ @Override
+ public SQLXML createSQLXML() throws SQLException {
+ throw new SQLFeatureNotSupportedException("createSQLXML");
+ }
+
+ @Override
+ public Statement createStatement() throws SQLException {
+ if (isClosed()) {
+ throw new SQLException("Can't create Statement, connection is closed");
+ }
+ return new TajoStatement(tajoClient);
+ }
+
+ @Override
+ public Statement createStatement(int resultSetType, int resultSetConcurrency)
+ throws SQLException {
+ throw new SQLFeatureNotSupportedException("createStatement");
+ }
+
+ @Override
+ public Statement createStatement(int resultSetType, int resultSetConcurrency,
+ int resultSetHoldability) throws SQLException {
+ throw new SQLFeatureNotSupportedException("createStatement");
+ }
+
+ @Override
+ public Struct createStruct(String typeName, Object[] attributes)
+ throws SQLException {
+ throw new SQLFeatureNotSupportedException("createStruct");
+ }
+
+ @Override
+ public boolean getAutoCommit() throws SQLException {
+ return true;
+ }
+
+ @Override
+ public String getCatalog() throws SQLException {
+ return "";
+ }
+
+ @Override
+ public Properties getClientInfo() throws SQLException {
+ throw new SQLFeatureNotSupportedException("getClientInfo");
+ }
+
+ @Override
+ public String getClientInfo(String name) throws SQLException {
+ throw new SQLFeatureNotSupportedException("getClientInfo");
+ }
+
+ @Override
+ public int getHoldability() throws SQLException {
+ throw new SQLFeatureNotSupportedException("getHoldability");
+ }
+
+ @Override
+ public DatabaseMetaData getMetaData() throws SQLException {
+ return new TajoDatabaseMetaData(this);
+ }
+
+ @Override
+ public int getTransactionIsolation() throws SQLException {
+ return Connection.TRANSACTION_NONE;
+ }
+
+ @Override
+ public Map<String, Class<?>> getTypeMap() throws SQLException {
+ throw new SQLFeatureNotSupportedException("getTypeMap");
+ }
+
+ @Override
+ public SQLWarning getWarnings() throws SQLException {
+ throw new SQLFeatureNotSupportedException("getWarnings");
+ }
+
+ @Override
+ public boolean isClosed() throws SQLException {
+ return closed.get();
+ }
+
+ @Override
+ public boolean isReadOnly() throws SQLException {
+ return false;
+ }
+
+ @Override
+ public boolean isValid(int timeout) throws SQLException {
+ throw new SQLFeatureNotSupportedException("isValid");
+ }
+
+ @Override
+ public String nativeSQL(String sql) throws SQLException {
+ throw new SQLFeatureNotSupportedException("nativeSQL");
+ }
+
+ @Override
+ public CallableStatement prepareCall(String sql) throws SQLException {
+ throw new SQLFeatureNotSupportedException("prepareCall");
+ }
+
+ @Override
+ public CallableStatement prepareCall(String sql, int resultSetType,
+ int resultSetConcurrency) throws SQLException {
+ throw new SQLFeatureNotSupportedException("prepareCall");
+ }
+
+ @Override
+ public CallableStatement prepareCall(String sql, int resultSetType,
+ int resultSetConcurrency, int resultSetHoldability) throws SQLException {
+ throw new SQLFeatureNotSupportedException("prepareCall");
+ }
+
+ @Override
+ public PreparedStatement prepareStatement(String sql) throws SQLException {
+ return new TajoPreparedStatement(tajoClient, sql);
+ }
+
+ @Override
+ public PreparedStatement prepareStatement(String sql, int autoGeneratedKeys)
+ throws SQLException {
+ return new TajoPreparedStatement(tajoClient, sql);
+ }
+
+ @Override
+ public PreparedStatement prepareStatement(String sql, int[] columnIndexes)
+ throws SQLException {
+ throw new SQLFeatureNotSupportedException("prepareStatement");
+ }
+
+ @Override
+ public PreparedStatement prepareStatement(String sql, String[] columnNames)
+ throws SQLException {
+ throw new SQLFeatureNotSupportedException("prepareStatement");
+ }
+
+ @Override
+ public PreparedStatement prepareStatement(String sql, int resultSetType,
+ int resultSetConcurrency) throws SQLException {
+ return new TajoPreparedStatement(tajoClient, sql);
+ }
+
+ @Override
+ public PreparedStatement prepareStatement(String sql, int resultSetType,
+ int resultSetConcurrency, int resultSetHoldability) throws SQLException {
+ throw new SQLFeatureNotSupportedException("prepareStatement");
+ }
+
+ @Override
+ public void releaseSavepoint(Savepoint savepoint) throws SQLException {
+ throw new SQLFeatureNotSupportedException("releaseSavepoint");
+ }
+
+ @Override
+ public void rollback() throws SQLException {
+ throw new SQLFeatureNotSupportedException("rollback");
+ }
+
+ @Override
+ public void rollback(Savepoint savepoint) throws SQLException {
+ throw new SQLFeatureNotSupportedException("rollback");
+ }
+
+ @Override
+ public void setAutoCommit(boolean autoCommit) throws SQLException {
+ throw new SQLFeatureNotSupportedException("setAutoCommit");
+ }
+
+ @Override
+ public void setCatalog(String catalog) throws SQLException {
+ throw new SQLFeatureNotSupportedException("setCatalog");
+ }
+
+ @Override
+ public void setClientInfo(Properties properties)
+ throws SQLClientInfoException {
+ throw new UnsupportedOperationException("setClientInfo");
+ }
+
+ @Override
+ public void setClientInfo(String name, String value)
+ throws SQLClientInfoException {
+ throw new UnsupportedOperationException("setClientInfo");
+ }
+
+ @Override
+ public void setHoldability(int holdability) throws SQLException {
+ throw new SQLFeatureNotSupportedException("setHoldability");
+ }
+
+ @Override
+ public void setReadOnly(boolean readOnly) throws SQLException {
+ throw new SQLFeatureNotSupportedException("setReadOnly");
+ }
+
+ @Override
+ public Savepoint setSavepoint() throws SQLException {
+ throw new SQLFeatureNotSupportedException("setSavepoint");
+ }
+
+ @Override
+ public Savepoint setSavepoint(String name) throws SQLException {
+ throw new SQLFeatureNotSupportedException("setSavepoint");
+ }
+
+ @Override
+ public void setTransactionIsolation(int level) throws SQLException {
+ throw new SQLFeatureNotSupportedException("setTransactionIsolation");
+ }
+
+ @Override
+ public void setTypeMap(Map<String, Class<?>> map) throws SQLException {
+ throw new SQLFeatureNotSupportedException("setTypeMap");
+ }
+
+ @Override
+ public <T> T unwrap(Class<T> tClass) throws SQLException {
+ if (isWrapperFor(tClass)) {
+ return (T) this;
+ }
+ throw new SQLException("No wrapper for " + tClass);
+ }
+
+ @Override
+ public boolean isWrapperFor(Class<?> tClass) throws SQLException {
+ return tClass.isInstance(this);
+ }
+
+ public void abort(Executor executor) throws SQLException {
+ // JDK 1.7
+ throw new SQLFeatureNotSupportedException("abort not supported");
+ }
+
+ public int getNetworkTimeout() throws SQLException {
+ // JDK 1.7
+ throw new SQLFeatureNotSupportedException("getNetworkTimeout not supported");
+ }
+
+ public void setNetworkTimeout(Executor executor, int milliseconds) throws SQLException {
+ // JDK 1.7
+ throw new SQLFeatureNotSupportedException("setNetworkTimeout not supported");
+ }
+
+ public String getSchema() throws SQLException {
+ // JDK 1.7
+ throw new SQLFeatureNotSupportedException("getSchema not supported");
+ }
+
+ public void setSchema(String schema) throws SQLException {
+ // JDK 1.7
+ throw new SQLFeatureNotSupportedException("setSchema not supported");
+ }
+}