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 2013/07/02 16:16:21 UTC
[27/51] [partial] TAJO-22: The package prefix should be
org.apache.tajo. (DaeMyung Kang via hyunsik)
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/bc6359b8/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/planner/physical/UnaryPhysicalExec.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/planner/physical/UnaryPhysicalExec.java b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/planner/physical/UnaryPhysicalExec.java
new file mode 100644
index 0000000..4f61a50
--- /dev/null
+++ b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/planner/physical/UnaryPhysicalExec.java
@@ -0,0 +1,57 @@
+/**
+ * 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.engine.planner.physical;
+
+import com.google.common.annotations.VisibleForTesting;
+import org.apache.tajo.TaskAttemptContext;
+import org.apache.tajo.catalog.Schema;
+
+import java.io.IOException;
+
+public abstract class UnaryPhysicalExec extends PhysicalExec {
+ protected PhysicalExec child;
+
+ public UnaryPhysicalExec(TaskAttemptContext context,
+ Schema inSchema, Schema outSchema,
+ PhysicalExec child) {
+ super(context, inSchema, outSchema);
+ this.child = child;
+ }
+
+ public PhysicalExec getChild() {
+ return this.child;
+ }
+
+ @VisibleForTesting
+ public void setChild(PhysicalExec child){
+ this.child = child;
+ }
+
+ public void init() throws IOException {
+ child.init();
+ }
+
+ public void rescan() throws IOException {
+ child.rescan();
+ }
+
+ public void close() throws IOException {
+ child.close();
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/bc6359b8/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/planner/physical/UnionExec.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/planner/physical/UnionExec.java b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/planner/physical/UnionExec.java
new file mode 100644
index 0000000..7a757ca
--- /dev/null
+++ b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/planner/physical/UnionExec.java
@@ -0,0 +1,62 @@
+/**
+ * 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.engine.planner.physical;
+
+import org.apache.tajo.TaskAttemptContext;
+import org.apache.tajo.engine.query.exception.InvalidQueryException;
+import org.apache.tajo.storage.Tuple;
+
+import java.io.IOException;
+
+public class UnionExec extends BinaryPhysicalExec {
+ private boolean nextOuter = true;
+ private Tuple tuple;
+
+ public UnionExec(TaskAttemptContext context, PhysicalExec outer, PhysicalExec inner) {
+ super(context, outer.getSchema(), inner.getSchema(), outer, inner);
+ if (!outer.getSchema().equals(inner.getSchema())) {
+ throw new InvalidQueryException(
+ "The both schemas are not same");
+ }
+ }
+
+ @Override
+ public Tuple next() throws IOException {
+ if (nextOuter) {
+ tuple = outerChild.next();
+ if (tuple == null) {
+ nextOuter = false;
+ } else {
+ return tuple;
+ }
+ }
+
+ return innerChild.next();
+ }
+
+ @Override
+ public void rescan() throws IOException {
+ super.rescan();
+
+ nextOuter = true;
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/bc6359b8/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/query/QueryUnitRequestImpl.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/query/QueryUnitRequestImpl.java b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/query/QueryUnitRequestImpl.java
new file mode 100644
index 0000000..9245acb
--- /dev/null
+++ b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/query/QueryUnitRequestImpl.java
@@ -0,0 +1,304 @@
+/**
+ * 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.engine.query;
+
+import com.google.gson.annotations.Expose;
+import org.apache.tajo.QueryUnitAttemptId;
+import org.apache.tajo.engine.MasterWorkerProtos.Fetch;
+import org.apache.tajo.engine.MasterWorkerProtos.QueryUnitRequestProto;
+import org.apache.tajo.engine.MasterWorkerProtos.QueryUnitRequestProtoOrBuilder;
+import org.apache.tajo.ipc.protocolrecords.QueryUnitRequest;
+import org.apache.tajo.storage.Fragment;
+
+import java.net.URI;
+import java.util.ArrayList;
+import java.util.List;
+
+public class QueryUnitRequestImpl implements QueryUnitRequest {
+
+ @Expose
+ private QueryUnitAttemptId id;
+ @Expose
+ private List<Fragment> fragments;
+ @Expose
+ private String outputTable;
+ private boolean isUpdated;
+ @Expose
+ private boolean clusteredOutput;
+ @Expose
+ private String serializedData; // logical node
+ @Expose
+ private Boolean interQuery;
+ @Expose
+ private List<Fetch> fetches;
+ @Expose
+ private Boolean shouldDie;
+
+ private QueryUnitRequestProto proto = QueryUnitRequestProto.getDefaultInstance();
+ private QueryUnitRequestProto.Builder builder = null;
+ private boolean viaProto = false;
+
+ public QueryUnitRequestImpl() {
+ builder = QueryUnitRequestProto.newBuilder();
+ this.id = null;
+ this.isUpdated = false;
+ }
+
+ public QueryUnitRequestImpl(QueryUnitAttemptId id, List<Fragment> fragments,
+ String outputTable, boolean clusteredOutput,
+ String serializedData) {
+ this();
+ this.set(id, fragments, outputTable, clusteredOutput, serializedData);
+ }
+
+ public QueryUnitRequestImpl(QueryUnitRequestProto proto) {
+ this.proto = proto;
+ viaProto = true;
+ id = null;
+ isUpdated = false;
+ }
+
+ public void set(QueryUnitAttemptId id, List<Fragment> fragments,
+ String outputTable, boolean clusteredOutput,
+ String serializedData) {
+ this.id = id;
+ this.fragments = fragments;
+ this.outputTable = outputTable;
+ this.clusteredOutput = clusteredOutput;
+ this.serializedData = serializedData;
+ this.isUpdated = true;
+ }
+
+ @Override
+ public QueryUnitRequestProto getProto() {
+ mergeLocalToProto();
+ proto = viaProto ? proto : builder.build();
+ viaProto = true;
+ return proto;
+ }
+
+ @Override
+ public QueryUnitAttemptId getId() {
+ QueryUnitRequestProtoOrBuilder p = viaProto ? proto : builder;
+ if (id != null) {
+ return this.id;
+ }
+ if (!p.hasId()) {
+ return null;
+ }
+ this.id = new QueryUnitAttemptId(p.getId());
+ return this.id;
+ }
+
+ @Override
+ public List<Fragment> getFragments() {
+ QueryUnitRequestProtoOrBuilder p = viaProto ? proto : builder;
+ if (fragments != null) {
+ return fragments;
+ }
+ if (fragments == null) {
+ fragments = new ArrayList<Fragment>();
+ }
+ for (int i = 0; i < p.getFragmentsCount(); i++) {
+ fragments.add(new Fragment(p.getFragments(i)));
+ }
+ return this.fragments;
+ }
+
+ @Override
+ public String getOutputTableId() {
+ QueryUnitRequestProtoOrBuilder p = viaProto ? proto : builder;
+ if (outputTable != null) {
+ return this.outputTable;
+ }
+ if (!p.hasOutputTable()) {
+ return null;
+ }
+ this.outputTable = p.getOutputTable();
+ return this.outputTable;
+ }
+
+ @Override
+ public boolean isClusteredOutput() {
+ QueryUnitRequestProtoOrBuilder p = viaProto ? proto : builder;
+ if (isUpdated) {
+ return this.clusteredOutput;
+ }
+ if (!p.hasClusteredOutput()) {
+ return false;
+ }
+ this.clusteredOutput = p.getClusteredOutput();
+ this.isUpdated = true;
+ return this.clusteredOutput;
+ }
+
+ @Override
+ public String getSerializedData() {
+ QueryUnitRequestProtoOrBuilder p = viaProto ? proto : builder;
+ if (this.serializedData != null) {
+ return this.serializedData;
+ }
+ if (!p.hasSerializedData()) {
+ return null;
+ }
+ this.serializedData = p.getSerializedData();
+ return this.serializedData;
+ }
+
+ public boolean isInterQuery() {
+ QueryUnitRequestProtoOrBuilder p = viaProto ? proto : builder;
+ if (interQuery != null) {
+ return interQuery;
+ }
+ if (!p.hasInterQuery()) {
+ return false;
+ }
+ this.interQuery = p.getInterQuery();
+ return this.interQuery;
+ }
+
+ public void setInterQuery() {
+ maybeInitBuilder();
+ this.interQuery = true;
+ }
+
+ public void addFetch(String name, URI uri) {
+ maybeInitBuilder();
+ initFetches();
+ fetches.add(
+ Fetch.newBuilder()
+ .setName(name)
+ .setUrls(uri.toString()).build());
+
+ }
+
+ public List<Fetch> getFetches() {
+ initFetches();
+
+ return this.fetches;
+ }
+
+ private void initFetches() {
+ if (this.fetches != null) {
+ return;
+ }
+ QueryUnitRequestProtoOrBuilder p = viaProto ? proto : builder;
+ this.fetches = new ArrayList<Fetch>();
+ for(Fetch fetch : p.getFetchesList()) {
+ fetches.add(fetch);
+ }
+ }
+
+ @Override
+ public boolean shouldDie() {
+ QueryUnitRequestProtoOrBuilder p = viaProto ? proto : builder;
+ if (shouldDie != null) {
+ return shouldDie;
+ }
+ if (!p.hasShouldDie()) {
+ return false;
+ }
+ this.shouldDie = p.getShouldDie();
+ return this.shouldDie;
+ }
+
+ @Override
+ public void setShouldDie() {
+ maybeInitBuilder();
+ shouldDie = true;
+ }
+
+ private void maybeInitBuilder() {
+ if (viaProto || builder == null) {
+ builder = QueryUnitRequestProto.newBuilder(proto);
+ }
+ viaProto = true;
+ }
+
+ private void mergeLocalToBuilder() {
+ if (id != null) {
+ builder.setId(this.id.getProto());
+ }
+ if (fragments != null) {
+ for (int i = 0; i < fragments.size(); i++) {
+ builder.addFragments(fragments.get(i).getProto());
+ }
+ }
+ if (this.outputTable != null) {
+ builder.setOutputTable(this.outputTable);
+ }
+ if (this.isUpdated) {
+ builder.setClusteredOutput(this.clusteredOutput);
+ }
+ if (this.serializedData != null) {
+ builder.setSerializedData(this.serializedData);
+ }
+ if (this.interQuery != null) {
+ builder.setInterQuery(this.interQuery);
+ }
+ if (this.fetches != null) {
+ builder.addAllFetches(this.fetches);
+ }
+ if (this.shouldDie != null) {
+ builder.setShouldDie(this.shouldDie);
+ }
+ }
+
+ private void mergeLocalToProto() {
+ if(viaProto) {
+ maybeInitBuilder();
+ }
+ mergeLocalToBuilder();
+ proto = builder.build();
+ viaProto = true;
+ }
+
+ @Override
+ public void initFromProto() {
+ QueryUnitRequestProtoOrBuilder p = viaProto ? proto : builder;
+ if (id == null && p.hasId()) {
+ this.id = new QueryUnitAttemptId(p.getId());
+ }
+ if (fragments == null && p.getFragmentsCount() > 0) {
+ this.fragments = new ArrayList<Fragment>();
+ for (int i = 0; i < p.getFragmentsCount(); i++) {
+ this.fragments.add(new Fragment(p.getFragments(i)));
+ }
+ }
+ if (outputTable == null && p.hasOutputTable()) {
+ this.outputTable = p.getOutputTable();
+ }
+ if (isUpdated == false && p.hasClusteredOutput()) {
+ this.clusteredOutput = p.getClusteredOutput();
+ }
+ if (serializedData == null && p.hasSerializedData()) {
+ this.serializedData = p.getSerializedData();
+ }
+ if (interQuery == null && p.hasInterQuery()) {
+ this.interQuery = p.getInterQuery();
+ }
+ if (fetches == null && p.getFetchesCount() > 0) {
+ this.fetches = p.getFetchesList();
+ }
+ if (shouldDie == null && p.getShouldDie()) {
+ this.shouldDie = true;
+ }
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/bc6359b8/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/query/ResultSetImpl.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/query/ResultSetImpl.java b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/query/ResultSetImpl.java
new file mode 100644
index 0000000..62a3ceb
--- /dev/null
+++ b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/query/ResultSetImpl.java
@@ -0,0 +1,2222 @@
+/**
+ * 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.engine.query;
+
+import com.google.common.collect.Lists;
+import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.fs.*;
+import org.apache.tajo.catalog.TableMeta;
+import org.apache.tajo.catalog.TableMetaImpl;
+import org.apache.tajo.catalog.proto.CatalogProtos.TableProto;
+import org.apache.tajo.datum.Datum;
+import org.apache.tajo.datum.NullDatum;
+import org.apache.tajo.exception.UnsupportedException;
+import org.apache.tajo.storage.Fragment;
+import org.apache.tajo.storage.MergeScanner;
+import org.apache.tajo.storage.Scanner;
+import org.apache.tajo.storage.Tuple;
+import org.apache.tajo.util.FileUtil;
+
+import java.io.FileNotFoundException;
+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 Configuration conf;
+ private FileSystem fs;
+ private Scanner scanner;
+ private TableMeta meta;
+ private Tuple cur;
+ private int curRow;
+ private long totalRow;
+ private boolean wasNull;
+
+ public ResultSetImpl(Configuration conf, String path) throws IOException {
+ this(conf, new Path(path));
+ }
+
+ public ResultSetImpl(Configuration conf, Path path) throws IOException {
+ this.conf = conf;
+ this.fs = path.getFileSystem(this.conf);
+ // TODO - to be improved. It can be solved to get the query finish status
+ // from master.
+ try {
+ this.meta = getMeta(this.conf, path);
+ } catch (FileNotFoundException fnf) {
+ this.totalRow = 0;
+ init();
+ return;
+ }
+ this.totalRow = meta.getStat() != null ? meta.getStat().getNumRows() : 0;
+ Collection<Fragment> frags = getFragmentsNG(meta, path);
+ scanner = new MergeScanner(conf, meta, frags);
+ init();
+ }
+
+ private void init() {
+ cur = null;
+ curRow = 0;
+ }
+
+ private TableMeta getMeta(Configuration conf, Path tablePath)
+ throws IOException {
+ Path tableMetaPath = new Path(tablePath, ".meta");
+ if (!fs.exists(tableMetaPath)) {
+ throw new FileNotFoundException(".meta file not found in "
+ + tablePath.toString());
+ }
+ FSDataInputStream in = fs.open(tableMetaPath);
+ TableProto tableProto = (TableProto) FileUtil.loadProto(in,
+ TableProto.getDefaultInstance());
+ return new TableMetaImpl(tableProto);
+ }
+
+ class FileNameComparator implements Comparator<FileStatus> {
+
+ @Override
+ public int compare(FileStatus f1, FileStatus f2) {
+ return f2.getPath().getName().compareTo(f1.getPath().getName());
+ }
+ }
+
+ private Collection<Fragment> getFragmentsNG(TableMeta meta, Path tablePath)
+ throws IOException {
+ List<Fragment> 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 Fragment(tbname + "_" + i, files[i].getPath(), meta, 0l,
+ files[i].getLen(), null));
+ }
+ return fraglist;
+ }
+
+ private Fragment[] getFragments(TableMeta meta, Path tablePath)
+ throws IOException {
+ List<Fragment> fraglist = Lists.newArrayList();
+ FileStatus[] files = fs.listStatus(new Path(tablePath, "data"));
+ 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 Fragment(tbname + "_" + i, files[i].getPath(), meta, 0l,
+ files[i].getLen(), null));
+ }
+ return fraglist.toArray(new Fragment[fraglist.size()]);
+ }
+
+ /*
+ * (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 {
+ 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 {
+ this.scanner.close();
+ 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 this.meta.getSchema().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 {
+ // TODO Auto-generated method stub
+ throw new UnsupportedException();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see java.sql.ResultSet#getArray(java.lang.String)
+ */
+ @Override
+ public Array getArray(String arg0) throws SQLException {
+ // TODO Auto-generated method stub
+ throw new UnsupportedException();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see java.sql.ResultSet#getAsciiStream(int)
+ */
+ @Override
+ public InputStream getAsciiStream(int arg0) throws SQLException {
+ // TODO Auto-generated method stub
+ throw new UnsupportedException();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see java.sql.ResultSet#getAsciiStream(java.lang.String)
+ */
+ @Override
+ public InputStream getAsciiStream(String arg0) throws SQLException {
+ // TODO Auto-generated method stub
+ 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 {
+ // TODO Auto-generated method stub
+ throw new UnsupportedException();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see java.sql.ResultSet#getBigDecimal(java.lang.String, int)
+ */
+ @Override
+ public BigDecimal getBigDecimal(String arg0, int arg1) throws SQLException {
+ // TODO Auto-generated method stub
+ throw new UnsupportedException();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see java.sql.ResultSet#getBinaryStream(int)
+ */
+ @Override
+ public InputStream getBinaryStream(int arg0) throws SQLException {
+ // TODO Auto-generated method stub
+ throw new UnsupportedException();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see java.sql.ResultSet#getBinaryStream(java.lang.String)
+ */
+ @Override
+ public InputStream getBinaryStream(String arg0) throws SQLException {
+ // TODO Auto-generated method stub
+ 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 {
+ // TODO Auto-generated method stub
+ throw new UnsupportedException();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see java.sql.ResultSet#getCharacterStream(java.lang.String)
+ */
+ @Override
+ public Reader getCharacterStream(String arg0) throws SQLException {
+ // TODO Auto-generated method stub
+ 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 {
+ // TODO Auto-generated method stub
+ throw new UnsupportedException();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see java.sql.ResultSet#getDate(java.lang.String)
+ */
+ @Override
+ public Date getDate(String arg0) throws SQLException {
+ // TODO Auto-generated method stub
+ throw new UnsupportedException();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see java.sql.ResultSet#getDate(int, java.util.Calendar)
+ */
+ @Override
+ public Date getDate(int arg0, Calendar arg1) throws SQLException {
+ // TODO Auto-generated method stub
+ 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 {
+ // TODO Auto-generated method stub
+ 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(meta);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see java.sql.ResultSet#getNCharacterStream(int)
+ */
+ @Override
+ public Reader getNCharacterStream(int arg0) throws SQLException {
+ // TODO Auto-generated method stub
+ throw new UnsupportedException();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see java.sql.ResultSet#getNCharacterStream(java.lang.String)
+ */
+ @Override
+ public Reader getNCharacterStream(String arg0) throws SQLException {
+ // TODO Auto-generated method stub
+ 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 {
+ // TODO Auto-generated method stub
+ throw new UnsupportedException();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see java.sql.ResultSet#getNString(java.lang.String)
+ */
+ @Override
+ public String getNString(String arg0) throws SQLException {
+ // TODO Auto-generated method stub
+ 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);
+ wasNull = (d == null);
+
+ // 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));
+ wasNull = (d == null);
+ 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 {
+ // TODO Auto-generated method stub
+ 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 {
+ // TODO Auto-generated method stub
+ 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 {
+ // TODO Auto-generated method stub
+ 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 {
+ // TODO Auto-generated method stub
+ 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 {
+ // TODO Auto-generated method stub
+ throw new UnsupportedException();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see java.sql.ResultSet#getRowId(java.lang.String)
+ */
+ @Override
+ public RowId getRowId(String arg0) throws SQLException {
+ // TODO Auto-generated method stub
+ 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 {
+ // TODO Auto-generated method stub
+ throw new UnsupportedException();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see java.sql.ResultSet#getTime(java.lang.String)
+ */
+ @Override
+ public Time getTime(String name) throws SQLException {
+ // TODO Auto-generated method stub
+ throw new UnsupportedException();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see java.sql.ResultSet#getTime(int, java.util.Calendar)
+ */
+ @Override
+ public Time getTime(int fieldId, Calendar arg1) throws SQLException {
+ // TODO Auto-generated method stub
+ 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 {
+ // TODO Auto-generated method stub
+ throw new UnsupportedException();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see java.sql.ResultSet#getTimestamp(int)
+ */
+ @Override
+ public Timestamp getTimestamp(int fieldId) throws SQLException {
+ // TODO Auto-generated method stub
+ throw new UnsupportedException();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see java.sql.ResultSet#getTimestamp(java.lang.String)
+ */
+ @Override
+ public Timestamp getTimestamp(String arg0) throws SQLException {
+ // TODO Auto-generated method stub
+ throw new UnsupportedException();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see java.sql.ResultSet#getTimestamp(int, java.util.Calendar)
+ */
+ @Override
+ public Timestamp getTimestamp(int fieldId, Calendar arg1) throws SQLException {
+ // TODO Auto-generated method stub
+ 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 {
+ // TODO Auto-generated method stub
+ 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 {
+ // TODO Auto-generated method stub
+ throw new UnsupportedException();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see java.sql.ResultSet#getURL(java.lang.String)
+ */
+ @Override
+ public URL getURL(String arg0) throws SQLException {
+ // TODO Auto-generated method stub
+ 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 {
+ // TODO
+ 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 {
+ 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 {
+ // TODO Auto-generated method stub
+ 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);
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/bc6359b8/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/query/ResultSetMetaDataImpl.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/query/ResultSetMetaDataImpl.java b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/query/ResultSetMetaDataImpl.java
new file mode 100644
index 0000000..9ebd158
--- /dev/null
+++ b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/query/ResultSetMetaDataImpl.java
@@ -0,0 +1,259 @@
+/**
+ * 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.engine.query;
+
+import org.apache.tajo.catalog.TableMeta;
+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 TableMeta meta;
+
+ public ResultSetMetaDataImpl(TableMeta meta) {
+ this.meta = meta;
+ }
+
+ /* (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 meta.getSchema().getColumn(column - 1).getClass().getName();
+ }
+
+ /* (non-Javadoc)
+ * @see java.sql.ResultSetMetaData#getColumnCount()
+ */
+ @Override
+ public int getColumnCount() throws SQLException {
+ return meta.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 meta.getSchema().getColumn(column - 1).getQualifiedName();
+ }
+
+ /* (non-Javadoc)
+ * @see java.sql.ResultSetMetaData#getColumnName(int)
+ */
+ @Override
+ public String getColumnName(int column) throws SQLException {
+ return meta.getSchema().getColumn(column - 1).getColumnName();
+ }
+
+ /* (non-Javadoc)
+ * @see java.sql.ResultSetMetaData#getColumnType(int)
+ */
+ @Override
+ public int getColumnType(int column) throws SQLException {
+ // TODO
+ DataType type = meta.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 meta.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 meta.getSchema().getColumn(column - 1).getTableName();
+ }
+
+ /* (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/bc6359b8/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/query/exception/AmbiguousFieldException.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/query/exception/AmbiguousFieldException.java b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/query/exception/AmbiguousFieldException.java
new file mode 100644
index 0000000..7f05e6e
--- /dev/null
+++ b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/query/exception/AmbiguousFieldException.java
@@ -0,0 +1,30 @@
+/**
+ * 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.engine.query.exception;
+
+public class AmbiguousFieldException extends InvalidQueryException {
+ private static final long serialVersionUID = 3102675985226352347L;
+
+ /**
+ * @param fieldName
+ */
+ public AmbiguousFieldException(String fieldName) {
+ super("ERROR: column name "+ fieldName + " is ambiguous");
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/bc6359b8/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/query/exception/InvalidQueryException.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/query/exception/InvalidQueryException.java b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/query/exception/InvalidQueryException.java
new file mode 100644
index 0000000..5673c5f
--- /dev/null
+++ b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/query/exception/InvalidQueryException.java
@@ -0,0 +1,35 @@
+/**
+ * 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.engine.query.exception;
+
+public class InvalidQueryException extends RuntimeException {
+ private static final long serialVersionUID = -7085849718839416246L;
+
+ public InvalidQueryException() {
+ super();
+ }
+
+ public InvalidQueryException(String message) {
+ super(message);
+ }
+
+ public InvalidQueryException(Throwable t) {
+ super(t);
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/bc6359b8/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/query/exception/NotSupportQueryException.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/query/exception/NotSupportQueryException.java b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/query/exception/NotSupportQueryException.java
new file mode 100644
index 0000000..c60aa1f
--- /dev/null
+++ b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/query/exception/NotSupportQueryException.java
@@ -0,0 +1,34 @@
+/**
+ * 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.engine.query.exception;
+
+
+public class NotSupportQueryException extends InvalidQueryException {
+ private static final long serialVersionUID = 4079784008765680410L;
+
+ /**
+ * @param query
+ */
+ public NotSupportQueryException(String query) {
+ super("Unsupported query: "+query);
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/bc6359b8/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/query/exception/TQLParseError.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/query/exception/TQLParseError.java b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/query/exception/TQLParseError.java
new file mode 100644
index 0000000..b9db4d3
--- /dev/null
+++ b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/query/exception/TQLParseError.java
@@ -0,0 +1,27 @@
+/**
+ * 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.engine.query.exception;
+
+
+@SuppressWarnings("UnusedDeclaration")
+public class TQLParseError extends RuntimeException {
+ public TQLParseError(String parseErrorMessage) {
+ super(parseErrorMessage);
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/bc6359b8/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/query/exception/TQLSyntaxError.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/query/exception/TQLSyntaxError.java b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/query/exception/TQLSyntaxError.java
new file mode 100644
index 0000000..b1fbc5b
--- /dev/null
+++ b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/query/exception/TQLSyntaxError.java
@@ -0,0 +1,45 @@
+/**
+ * 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.engine.query.exception;
+
+
+public class TQLSyntaxError extends InvalidQueryException {
+ private static final long serialVersionUID = 5388279335175632066L;
+
+ private String query;
+ private String errorMessage;
+ private String detailedMessage;
+
+ public TQLSyntaxError(String query, String errorMessage) {
+ this.query = query;
+ this.errorMessage = errorMessage;
+ }
+
+ @Override
+ public String getMessage() {
+ if (detailedMessage == null) {
+ StringBuilder sb = new StringBuilder();
+ sb.append("ERROR: " + errorMessage).append("\n");
+ sb.append("LINE: " + query);
+ detailedMessage = sb.toString();
+ }
+
+ return detailedMessage;
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/bc6359b8/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/query/exception/UndefinedFunctionException.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/query/exception/UndefinedFunctionException.java b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/query/exception/UndefinedFunctionException.java
new file mode 100644
index 0000000..c7f4e98
--- /dev/null
+++ b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/query/exception/UndefinedFunctionException.java
@@ -0,0 +1,34 @@
+/**
+ * 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.engine.query.exception;
+
+
+public class UndefinedFunctionException extends InvalidQueryException {
+ private static final long serialVersionUID = 113593927391549716L;
+
+ /**
+ * @param signature
+ */
+ public UndefinedFunctionException(String signature) {
+ super("Error: call to undefined function "+signature+"()");
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/bc6359b8/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/utils/ProtoUtil.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/utils/ProtoUtil.java b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/utils/ProtoUtil.java
new file mode 100644
index 0000000..93eca22
--- /dev/null
+++ b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/utils/ProtoUtil.java
@@ -0,0 +1,29 @@
+/**
+ * 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.engine.utils;
+
+import org.apache.tajo.rpc.protocolrecords.PrimitiveProtos.StringProto;
+
+public class ProtoUtil {
+ public static StringProto newProto(String val) {
+ StringProto.Builder builder = StringProto.newBuilder();
+ builder.setValue(val);
+ return builder.build();
+ }
+}