You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@calcite.apache.org by el...@apache.org on 2016/03/07 19:27:52 UTC
[14/59] [partial] calcite git commit: [CALCITE-1078] Detach avatica
from the core calcite Maven project
http://git-wip-us.apache.org/repos/asf/calcite/blob/5cee486f/avatica/src/main/java/org/apache/calcite/avatica/AvaticaResultSet.java
----------------------------------------------------------------------
diff --git a/avatica/src/main/java/org/apache/calcite/avatica/AvaticaResultSet.java b/avatica/src/main/java/org/apache/calcite/avatica/AvaticaResultSet.java
deleted file mode 100644
index 478723f..0000000
--- a/avatica/src/main/java/org/apache/calcite/avatica/AvaticaResultSet.java
+++ /dev/null
@@ -1,1046 +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.calcite.avatica;
-
-import org.apache.calcite.avatica.remote.TypedValue;
-import org.apache.calcite.avatica.util.ArrayImpl;
-import org.apache.calcite.avatica.util.Cursor;
-
-import java.io.InputStream;
-import java.io.Reader;
-import java.math.BigDecimal;
-import java.net.URL;
-import java.sql.Array;
-import java.sql.Blob;
-import java.sql.Clob;
-import java.sql.Date;
-import java.sql.NClob;
-import java.sql.Ref;
-import java.sql.ResultSet;
-import java.sql.ResultSetMetaData;
-import java.sql.RowId;
-import java.sql.SQLException;
-import java.sql.SQLWarning;
-import java.sql.SQLXML;
-import java.sql.Time;
-import java.sql.Timestamp;
-import java.util.Calendar;
-import java.util.List;
-import java.util.Map;
-import java.util.TimeZone;
-
-/**
- * Implementation of {@link java.sql.ResultSet}
- * for the Avatica engine.
- */
-public class AvaticaResultSet implements ResultSet, ArrayImpl.Factory {
- protected final AvaticaStatement statement;
- protected final QueryState state;
- protected final Meta.Signature signature;
- protected final Meta.Frame firstFrame;
- protected final List<ColumnMetaData> columnMetaDataList;
- protected final ResultSetMetaData resultSetMetaData;
- protected final Calendar localCalendar;
-
- protected Cursor cursor;
- protected List<Cursor.Accessor> accessorList;
- private int row;
- private boolean afterLast;
- private int fetchDirection;
- private int fetchSize;
- private int type;
- private int concurrency;
- private int holdability;
- private boolean closed;
- private long timeoutMillis;
- private Cursor timeoutCursor;
-
- public AvaticaResultSet(AvaticaStatement statement,
- QueryState state,
- Meta.Signature signature,
- ResultSetMetaData resultSetMetaData,
- TimeZone timeZone,
- Meta.Frame firstFrame) {
- this.statement = statement;
- this.state = state;
- this.signature = signature;
- this.firstFrame = firstFrame;
- this.columnMetaDataList = signature.columns;
- this.type = statement.resultSetType;
- this.concurrency = statement.resultSetConcurrency;
- this.holdability = statement.resultSetHoldability;
- this.fetchSize = statement.getFetchSize();
- this.fetchDirection = statement.getFetchDirection();
- this.resultSetMetaData = resultSetMetaData;
- this.localCalendar = Calendar.getInstance(timeZone);
- }
-
- private int findColumn0(String columnLabel) throws SQLException {
- for (ColumnMetaData columnMetaData : columnMetaDataList) {
- // Per JDBC 3.0 specification, match is case-insensitive and if there is
- // more than one column with a particular name, take the first.
- if (columnMetaData.label.equalsIgnoreCase(columnLabel)) {
- return columnMetaData.ordinal; // 0-based
- }
- }
- throw new SQLException("column '" + columnLabel + "' not found");
- }
-
- /**
- * Returns the accessor for column with a given index.
- *
- * @param columnIndex 1-based column index
- * @return Accessor
- * @throws SQLException if index is not valid
- */
- private Cursor.Accessor getAccessor(int columnIndex) throws SQLException {
- try {
- return accessorList.get(columnIndex - 1);
- } catch (IndexOutOfBoundsException e) {
- throw new SQLException("invalid column ordinal: " + columnIndex);
- }
- }
-
- /**
- * Returns the accessor for column with a given label.
- *
- * @param columnLabel Column label
- * @return Accessor
- * @throws SQLException if there is no column with that label
- */
- private Cursor.Accessor getAccessor(String columnLabel) throws SQLException {
- return accessorList.get(findColumn0(columnLabel));
- }
-
- public void close() {
- closed = true;
- final Cursor cursor = this.cursor;
- if (cursor != null) {
- this.cursor = null;
- cursor.close();
- }
- statement.onResultSetClose(this);
- // TODO: for timeout, see IteratorResultSet.close
-/*
- if (timeoutCursor != null) {
- final long noTimeout = 0;
- timeoutCursor.close(noTimeout);
- timeoutCursor = null;
- }
-*/
- }
-
- /**
- * Sets the timeout that this result set will wait for a row from the
- * underlying iterator.
- *
- * <p>Not a JDBC method.</p>
- *
- * @param timeoutMillis Timeout in milliseconds. Must be greater than zero.
- */
- void setTimeout(long timeoutMillis) {
- assert timeoutMillis > 0;
- assert this.timeoutMillis == 0;
- this.timeoutMillis = timeoutMillis;
- assert timeoutCursor == null;
- timeoutCursor = cursor;
-
- // TODO: for timeout, see IteratorResultSet.setTimeout
-/*
- timeoutCursor = new TimeoutCursor(timeoutMillis);
- timeoutCursor.start();
-*/
- }
-
- // not JDBC
- protected void cancel() {
- throw new UnsupportedOperationException(); // TODO:
- }
-
- /**
- * Executes this result set. (Not a JDBC method.)
- *
- * <p>Note that execute cannot occur in the constructor, because the
- * constructor occurs while the statement is locked, to make sure that
- * execute/cancel don't happen at the same time.</p>
- *
- * @see org.apache.calcite.avatica.AvaticaConnection.Trojan#execute(AvaticaResultSet)
- *
- * @throws SQLException if execute fails for some reason.
- */
- protected AvaticaResultSet execute() throws SQLException {
- final List<TypedValue> parameterValues = statement.getBoundParameterValues();
- final Iterable<Object> iterable1 =
- statement.connection.meta.createIterable(statement.handle, state, signature,
- parameterValues, firstFrame);
- this.cursor = MetaImpl.createCursor(signature.cursorFactory, iterable1);
- this.accessorList =
- cursor.createAccessors(columnMetaDataList, localCalendar, this);
- this.row = -1;
- this.afterLast = false;
- return this;
- }
-
- protected AvaticaResultSet execute2(Cursor cursor,
- List<ColumnMetaData> columnMetaDataList) {
- this.cursor = cursor;
- this.accessorList =
- cursor.createAccessors(columnMetaDataList, localCalendar, this);
- this.row = -1;
- this.afterLast = false;
- return this;
- }
-
- public ResultSet create(ColumnMetaData.AvaticaType elementType,
- Iterable<Object> iterable) {
- throw new UnsupportedOperationException();
- }
-
- public boolean next() throws SQLException {
- // TODO: for timeout, see IteratorResultSet.next
- if (isClosed()) {
- throw new SQLException("next() called on closed cursor");
- }
- if (cursor.next()) {
- ++row;
- return true;
- } else {
- afterLast = true;
- return false;
- }
- }
-
- public int findColumn(String columnLabel) throws SQLException {
- return findColumn0(columnLabel) + 1;
- }
-
- public boolean wasNull() throws SQLException {
- return cursor.wasNull();
- }
-
- public String getString(int columnIndex) throws SQLException {
- return getAccessor(columnIndex).getString();
- }
-
- public boolean getBoolean(int columnIndex) throws SQLException {
- return getAccessor(columnIndex).getBoolean();
- }
-
- public byte getByte(int columnIndex) throws SQLException {
- return getAccessor(columnIndex).getByte();
- }
-
- public short getShort(int columnIndex) throws SQLException {
- return getAccessor(columnIndex).getShort();
- }
-
- public int getInt(int columnIndex) throws SQLException {
- return getAccessor(columnIndex).getInt();
- }
-
- public long getLong(int columnIndex) throws SQLException {
- return getAccessor(columnIndex).getLong();
- }
-
- public float getFloat(int columnIndex) throws SQLException {
- return getAccessor(columnIndex).getFloat();
- }
-
- public double getDouble(int columnIndex) throws SQLException {
- return getAccessor(columnIndex).getDouble();
- }
-
- public BigDecimal getBigDecimal(
- int columnIndex, int scale) throws SQLException {
- return getAccessor(columnIndex).getBigDecimal(scale);
- }
-
- public byte[] getBytes(int columnIndex) throws SQLException {
- return getAccessor(columnIndex).getBytes();
- }
-
- public Date getDate(int columnIndex) throws SQLException {
- return getAccessor(columnIndex).getDate(localCalendar);
- }
-
- public Time getTime(int columnIndex) throws SQLException {
- return getAccessor(columnIndex).getTime(localCalendar);
- }
-
- public Timestamp getTimestamp(int columnIndex) throws SQLException {
- return getAccessor(columnIndex).getTimestamp(localCalendar);
- }
-
- public InputStream getAsciiStream(int columnIndex) throws SQLException {
- return getAccessor(columnIndex).getAsciiStream();
- }
-
- public InputStream getUnicodeStream(int columnIndex) throws SQLException {
- return getAccessor(columnIndex).getUnicodeStream();
- }
-
- public InputStream getBinaryStream(int columnIndex) throws SQLException {
- return getAccessor(columnIndex).getBinaryStream();
- }
-
- public String getString(String columnLabel) throws SQLException {
- return getAccessor(columnLabel).getString();
- }
-
- public boolean getBoolean(String columnLabel) throws SQLException {
- return getAccessor(columnLabel).getBoolean();
- }
-
- public byte getByte(String columnLabel) throws SQLException {
- return getAccessor(columnLabel).getByte();
- }
-
- public short getShort(String columnLabel) throws SQLException {
- return getAccessor(columnLabel).getShort();
- }
-
- public int getInt(String columnLabel) throws SQLException {
- return getAccessor(columnLabel).getInt();
- }
-
- public long getLong(String columnLabel) throws SQLException {
- return getAccessor(columnLabel).getLong();
- }
-
- public float getFloat(String columnLabel) throws SQLException {
- return getAccessor(columnLabel).getFloat();
- }
-
- public double getDouble(String columnLabel) throws SQLException {
- return getAccessor(columnLabel).getDouble();
- }
-
- public BigDecimal getBigDecimal(
- String columnLabel, int scale) throws SQLException {
- return getAccessor(columnLabel).getBigDecimal(scale);
- }
-
- public byte[] getBytes(String columnLabel) throws SQLException {
- return getAccessor(columnLabel).getBytes();
- }
-
- public Date getDate(String columnLabel) throws SQLException {
- return getAccessor(columnLabel).getDate(localCalendar);
- }
-
- public Time getTime(String columnLabel) throws SQLException {
- return getAccessor(columnLabel).getTime(localCalendar);
- }
-
- public Timestamp getTimestamp(String columnLabel) throws SQLException {
- return getAccessor(columnLabel).getTimestamp(localCalendar);
- }
-
- public InputStream getAsciiStream(String columnLabel) throws SQLException {
- return getAccessor(columnLabel).getAsciiStream();
- }
-
- public InputStream getUnicodeStream(String columnLabel) throws SQLException {
- return getAccessor(columnLabel).getUnicodeStream();
- }
-
- public InputStream getBinaryStream(String columnLabel) throws SQLException {
- return getAccessor(columnLabel).getBinaryStream();
- }
-
- public SQLWarning getWarnings() throws SQLException {
- return null; // no warnings, since warnings are not supported
- }
-
- public void clearWarnings() throws SQLException {
- // no-op since warnings are not supported
- }
-
- public String getCursorName() throws SQLException {
- throw new UnsupportedOperationException();
- }
-
- public ResultSetMetaData getMetaData() throws SQLException {
- return resultSetMetaData;
- }
-
- public Object getObject(int columnIndex) throws SQLException {
- final Cursor.Accessor accessor = getAccessor(columnIndex);
- final ColumnMetaData metaData = columnMetaDataList.get(columnIndex - 1);
- return AvaticaSite.get(accessor, metaData.type.id, localCalendar);
- }
-
- public Object getObject(String columnLabel) throws SQLException {
- return getAccessor(columnLabel).getObject();
- }
-
- public Reader getCharacterStream(int columnIndex) throws SQLException {
- return getAccessor(columnIndex).getCharacterStream();
- }
-
- public Reader getCharacterStream(String columnLabel) throws SQLException {
- return getAccessor(columnLabel).getCharacterStream();
- }
-
- public BigDecimal getBigDecimal(int columnIndex) throws SQLException {
- return getAccessor(columnIndex).getBigDecimal();
- }
-
- public BigDecimal getBigDecimal(String columnLabel) throws SQLException {
- return getAccessor(columnLabel).getBigDecimal();
- }
-
- public boolean isBeforeFirst() throws SQLException {
- return row < 0;
- }
-
- public boolean isAfterLast() throws SQLException {
- return afterLast;
- }
-
- public boolean isFirst() throws SQLException {
- return row == 0;
- }
-
- public boolean isLast() throws SQLException {
- throw new UnsupportedOperationException();
- }
-
- public void beforeFirst() throws SQLException {
- throw new UnsupportedOperationException();
- }
-
- public void afterLast() throws SQLException {
- throw new UnsupportedOperationException();
- }
-
- public boolean first() throws SQLException {
- throw new UnsupportedOperationException();
- }
-
- public boolean last() throws SQLException {
- throw new UnsupportedOperationException();
- }
-
- public int getRow() throws SQLException {
- return row;
- }
-
- public boolean absolute(int row) throws SQLException {
- throw new UnsupportedOperationException();
- }
-
- public boolean relative(int rows) throws SQLException {
- throw new UnsupportedOperationException();
- }
-
- public boolean previous() throws SQLException {
- throw new UnsupportedOperationException();
- }
-
- public void setFetchDirection(int direction) throws SQLException {
- this.fetchDirection = direction;
- }
-
- public int getFetchDirection() throws SQLException {
- return fetchDirection;
- }
-
- public void setFetchSize(int fetchSize) throws SQLException {
- this.fetchSize = fetchSize;
- }
-
- public int getFetchSize() throws SQLException {
- return fetchSize;
- }
-
- public int getType() throws SQLException {
- return type;
- }
-
- public int getConcurrency() throws SQLException {
- return concurrency;
- }
-
- public boolean rowUpdated() throws SQLException {
- return false;
- }
-
- public boolean rowInserted() throws SQLException {
- return false;
- }
-
- public boolean rowDeleted() throws SQLException {
- return false;
- }
-
- public void updateNull(int columnIndex) throws SQLException {
- throw new UnsupportedOperationException();
- }
-
- public void updateBoolean(int columnIndex, boolean x) throws SQLException {
- throw new UnsupportedOperationException();
- }
-
- public void updateByte(int columnIndex, byte x) throws SQLException {
- throw new UnsupportedOperationException();
- }
-
- public void updateShort(int columnIndex, short x) throws SQLException {
- throw new UnsupportedOperationException();
- }
-
- public void updateInt(int columnIndex, int x) throws SQLException {
- throw new UnsupportedOperationException();
- }
-
- public void updateLong(int columnIndex, long x) throws SQLException {
- throw new UnsupportedOperationException();
- }
-
- public void updateFloat(int columnIndex, float x) throws SQLException {
- throw new UnsupportedOperationException();
- }
-
- public void updateDouble(int columnIndex, double x) throws SQLException {
- throw new UnsupportedOperationException();
- }
-
- public void updateBigDecimal(
- int columnIndex, BigDecimal x) throws SQLException {
- throw new UnsupportedOperationException();
- }
-
- public void updateString(int columnIndex, String x) throws SQLException {
- throw new UnsupportedOperationException();
- }
-
- public void updateBytes(int columnIndex, byte[] x) throws SQLException {
- throw new UnsupportedOperationException();
- }
-
- public void updateDate(int columnIndex, Date x) throws SQLException {
- throw new UnsupportedOperationException();
- }
-
- public void updateTime(int columnIndex, Time x) throws SQLException {
- throw new UnsupportedOperationException();
- }
-
- public void updateTimestamp(
- int columnIndex, Timestamp x) throws SQLException {
- throw new UnsupportedOperationException();
- }
-
- public void updateAsciiStream(
- int columnIndex, InputStream x, int length) throws SQLException {
- throw new UnsupportedOperationException();
- }
-
- public void updateBinaryStream(
- int columnIndex, InputStream x, int length) throws SQLException {
- throw new UnsupportedOperationException();
- }
-
- public void updateCharacterStream(
- int columnIndex, Reader x, int length) throws SQLException {
- throw new UnsupportedOperationException();
- }
-
- public void updateObject(
- int columnIndex, Object x, int scaleOrLength) throws SQLException {
- throw new UnsupportedOperationException();
- }
-
- public void updateObject(int columnIndex, Object x) throws SQLException {
- throw new UnsupportedOperationException();
- }
-
- public void updateNull(String columnLabel) throws SQLException {
- throw new UnsupportedOperationException();
- }
-
- public void updateBoolean(
- String columnLabel, boolean x) throws SQLException {
- throw new UnsupportedOperationException();
- }
-
- public void updateByte(String columnLabel, byte x) throws SQLException {
- throw new UnsupportedOperationException();
- }
-
- public void updateShort(String columnLabel, short x) throws SQLException {
- throw new UnsupportedOperationException();
- }
-
- public void updateInt(String columnLabel, int x) throws SQLException {
- throw new UnsupportedOperationException();
- }
-
- public void updateLong(String columnLabel, long x) throws SQLException {
- throw new UnsupportedOperationException();
- }
-
- public void updateFloat(String columnLabel, float x) throws SQLException {
- throw new UnsupportedOperationException();
- }
-
- public void updateDouble(String columnLabel, double x) throws SQLException {
- throw new UnsupportedOperationException();
- }
-
- public void updateBigDecimal(
- String columnLabel, BigDecimal x) throws SQLException {
- throw new UnsupportedOperationException();
- }
-
- public void updateString(String columnLabel, String x) throws SQLException {
- throw new UnsupportedOperationException();
- }
-
- public void updateBytes(String columnLabel, byte[] x) throws SQLException {
- throw new UnsupportedOperationException();
- }
-
- public void updateDate(String columnLabel, Date x) throws SQLException {
- throw new UnsupportedOperationException();
- }
-
- public void updateTime(String columnLabel, Time x) throws SQLException {
- throw new UnsupportedOperationException();
- }
-
- public void updateTimestamp(
- String columnLabel, Timestamp x) throws SQLException {
- throw new UnsupportedOperationException();
- }
-
- public void updateAsciiStream(
- String columnLabel, InputStream x, int length) throws SQLException {
- throw new UnsupportedOperationException();
- }
-
- public void updateBinaryStream(
- String columnLabel, InputStream x, int length) throws SQLException {
- throw new UnsupportedOperationException();
- }
-
- public void updateCharacterStream(
- String columnLabel, Reader reader, int length) throws SQLException {
- throw new UnsupportedOperationException();
- }
-
- public void updateObject(
- String columnLabel, Object x, int scaleOrLength) throws SQLException {
- throw new UnsupportedOperationException();
- }
-
- public void updateObject(String columnLabel, Object x) throws SQLException {
- throw new UnsupportedOperationException();
- }
-
- public void insertRow() throws SQLException {
- throw new UnsupportedOperationException();
- }
-
- public void updateRow() throws SQLException {
- throw new UnsupportedOperationException();
- }
-
- public void deleteRow() throws SQLException {
- throw new UnsupportedOperationException();
- }
-
- public void refreshRow() throws SQLException {
- throw new UnsupportedOperationException();
- }
-
- public void cancelRowUpdates() throws SQLException {
- throw new UnsupportedOperationException();
- }
-
- public void moveToInsertRow() throws SQLException {
- throw new UnsupportedOperationException();
- }
-
- public void moveToCurrentRow() throws SQLException {
- throw new UnsupportedOperationException();
- }
-
- public AvaticaStatement getStatement() {
- return statement;
- }
-
- public Object getObject(
- int columnIndex, Map<String, Class<?>> map) throws SQLException {
- return getAccessor(columnIndex).getObject(map);
- }
-
- public Ref getRef(int columnIndex) throws SQLException {
- return getAccessor(columnIndex).getRef();
- }
-
- public Blob getBlob(int columnIndex) throws SQLException {
- return getAccessor(columnIndex).getBlob();
- }
-
- public Clob getClob(int columnIndex) throws SQLException {
- return getAccessor(columnIndex).getClob();
- }
-
- public Array getArray(int columnIndex) throws SQLException {
- return getAccessor(columnIndex).getArray();
- }
-
- public Object getObject(
- String columnLabel, Map<String, Class<?>> map) throws SQLException {
- return getAccessor(columnLabel).getObject(map);
- }
-
- public Ref getRef(String columnLabel) throws SQLException {
- return getAccessor(columnLabel).getRef();
- }
-
- public Blob getBlob(String columnLabel) throws SQLException {
- return getAccessor(columnLabel).getBlob();
- }
-
- public Clob getClob(String columnLabel) throws SQLException {
- return getAccessor(columnLabel).getClob();
- }
-
- public Array getArray(String columnLabel) throws SQLException {
- return getAccessor(columnLabel).getArray();
- }
-
- public Date getDate(int columnIndex, Calendar cal) throws SQLException {
- return getAccessor(columnIndex).getDate(cal);
- }
-
- public Date getDate(String columnLabel, Calendar cal) throws SQLException {
- return getAccessor(columnLabel).getDate(cal);
- }
-
- public Time getTime(int columnIndex, Calendar cal) throws SQLException {
- return getAccessor(columnIndex).getTime(cal);
- }
-
- public Time getTime(String columnLabel, Calendar cal) throws SQLException {
- return getAccessor(columnLabel).getTime(cal);
- }
-
- public Timestamp getTimestamp(
- int columnIndex, Calendar cal) throws SQLException {
- return getAccessor(columnIndex).getTimestamp(cal);
- }
-
- public Timestamp getTimestamp(
- String columnLabel, Calendar cal) throws SQLException {
- return getAccessor(columnLabel).getTimestamp(cal);
- }
-
- public URL getURL(int columnIndex) throws SQLException {
- return getAccessor(columnIndex).getURL();
- }
-
- public URL getURL(String columnLabel) throws SQLException {
- return getAccessor(columnLabel).getURL();
- }
-
- public void updateRef(int columnIndex, Ref x) throws SQLException {
- throw new UnsupportedOperationException();
- }
-
- public void updateRef(String columnLabel, Ref x) throws SQLException {
- throw new UnsupportedOperationException();
- }
-
- public void updateBlob(int columnIndex, Blob x) throws SQLException {
- throw new UnsupportedOperationException();
- }
-
- public void updateBlob(String columnLabel, Blob x) throws SQLException {
- throw new UnsupportedOperationException();
- }
-
- public void updateClob(int columnIndex, Clob x) throws SQLException {
- throw new UnsupportedOperationException();
- }
-
- public void updateClob(String columnLabel, Clob x) throws SQLException {
- throw new UnsupportedOperationException();
- }
-
- public void updateArray(int columnIndex, Array x) throws SQLException {
- throw new UnsupportedOperationException();
- }
-
- public void updateArray(String columnLabel, Array x) throws SQLException {
- throw new UnsupportedOperationException();
- }
-
- public RowId getRowId(int columnIndex) throws SQLException {
- throw new UnsupportedOperationException();
- }
-
- public RowId getRowId(String columnLabel) throws SQLException {
- throw new UnsupportedOperationException();
- }
-
- public void updateRowId(int columnIndex, RowId x) throws SQLException {
- throw new UnsupportedOperationException();
- }
-
- public void updateRowId(String columnLabel, RowId x) throws SQLException {
- throw new UnsupportedOperationException();
- }
-
- public int getHoldability() throws SQLException {
- return holdability;
- }
-
- public boolean isClosed() throws SQLException {
- return closed;
- }
-
- public void updateNString(
- int columnIndex, String nString) throws SQLException {
- throw new UnsupportedOperationException();
- }
-
- public void updateNString(
- String columnLabel, String nString) throws SQLException {
- throw new UnsupportedOperationException();
- }
-
- public void updateNClob(int columnIndex, NClob nClob) throws SQLException {
- throw new UnsupportedOperationException();
- }
-
- public void updateNClob(
- String columnLabel, NClob nClob) throws SQLException {
- throw new UnsupportedOperationException();
- }
-
- public NClob getNClob(int columnIndex) throws SQLException {
- return getAccessor(columnIndex).getNClob();
- }
-
- public NClob getNClob(String columnLabel) throws SQLException {
- return getAccessor(columnLabel).getNClob();
- }
-
- public SQLXML getSQLXML(int columnIndex) throws SQLException {
- return getAccessor(columnIndex).getSQLXML();
- }
-
- public SQLXML getSQLXML(String columnLabel) throws SQLException {
- return getAccessor(columnLabel).getSQLXML();
- }
-
- public void updateSQLXML(
- int columnIndex, SQLXML xmlObject) throws SQLException {
- throw new UnsupportedOperationException();
- }
-
- public void updateSQLXML(
- String columnLabel, SQLXML xmlObject) throws SQLException {
- throw new UnsupportedOperationException();
- }
-
- public String getNString(int columnIndex) throws SQLException {
- return getAccessor(columnIndex).getNString();
- }
-
- public String getNString(String columnLabel) throws SQLException {
- return getAccessor(columnLabel).getNString();
- }
-
- public Reader getNCharacterStream(int columnIndex) throws SQLException {
- return getAccessor(columnIndex).getNCharacterStream();
- }
-
- public Reader getNCharacterStream(String columnLabel) throws SQLException {
- return getAccessor(columnLabel).getNCharacterStream();
- }
-
- public void updateNCharacterStream(
- int columnIndex, Reader x, long length) throws SQLException {
- throw new UnsupportedOperationException();
- }
-
- public void updateNCharacterStream(
- String columnLabel, Reader reader, long length) throws SQLException {
- throw new UnsupportedOperationException();
- }
-
- public void updateAsciiStream(
- int columnIndex, InputStream x, long length) throws SQLException {
- throw new UnsupportedOperationException();
- }
-
- public void updateBinaryStream(
- int columnIndex, InputStream x, long length) throws SQLException {
- throw new UnsupportedOperationException();
- }
-
- public void updateCharacterStream(
- int columnIndex, Reader x, long length) throws SQLException {
- throw new UnsupportedOperationException();
- }
-
- public void updateAsciiStream(
- String columnLabel, InputStream x, long length) throws SQLException {
- throw new UnsupportedOperationException();
- }
-
- public void updateBinaryStream(
- String columnLabel, InputStream x, long length) throws SQLException {
- throw new UnsupportedOperationException();
- }
-
- public void updateCharacterStream(
- String columnLabel, Reader reader, long length) throws SQLException {
- throw new UnsupportedOperationException();
- }
-
- public void updateBlob(
- int columnIndex,
- InputStream inputStream,
- long length) throws SQLException {
- throw new UnsupportedOperationException();
- }
-
- public void updateBlob(
- String columnLabel,
- InputStream inputStream,
- long length) throws SQLException {
- throw new UnsupportedOperationException();
- }
-
- public void updateClob(
- int columnIndex, Reader reader, long length) throws SQLException {
- throw new UnsupportedOperationException();
- }
-
- public void updateClob(
- String columnLabel, Reader reader, long length) throws SQLException {
- throw new UnsupportedOperationException();
- }
-
- public void updateNClob(
- int columnIndex, Reader reader, long length) throws SQLException {
- throw new UnsupportedOperationException();
- }
-
- public void updateNClob(
- String columnLabel, Reader reader, long length) throws SQLException {
- throw new UnsupportedOperationException();
- }
-
- public void updateNCharacterStream(
- int columnIndex, Reader x) throws SQLException {
- throw new UnsupportedOperationException();
- }
-
- public void updateNCharacterStream(
- String columnLabel, Reader reader) throws SQLException {
- throw new UnsupportedOperationException();
- }
-
- public void updateAsciiStream(
- int columnIndex, InputStream x) throws SQLException {
- throw new UnsupportedOperationException();
- }
-
- public void updateBinaryStream(
- int columnIndex, InputStream x) throws SQLException {
- throw new UnsupportedOperationException();
- }
-
- public void updateCharacterStream(
- int columnIndex, Reader x) throws SQLException {
- throw new UnsupportedOperationException();
- }
-
- public void updateAsciiStream(
- String columnLabel, InputStream x) throws SQLException {
- throw new UnsupportedOperationException();
- }
-
- public void updateBinaryStream(
- String columnLabel, InputStream x) throws SQLException {
- throw new UnsupportedOperationException();
- }
-
- public void updateCharacterStream(
- String columnLabel, Reader reader) throws SQLException {
- throw new UnsupportedOperationException();
- }
-
- public void updateBlob(
- int columnIndex, InputStream inputStream) throws SQLException {
- throw new UnsupportedOperationException();
- }
-
- public void updateBlob(
- String columnLabel, InputStream inputStream) throws SQLException {
- throw new UnsupportedOperationException();
- }
-
- public void updateClob(int columnIndex, Reader reader) throws SQLException {
- throw new UnsupportedOperationException();
- }
-
- public void updateClob(
- String columnLabel, Reader reader) throws SQLException {
- throw new UnsupportedOperationException();
- }
-
- public void updateNClob(
- int columnIndex, Reader reader) throws SQLException {
- throw new UnsupportedOperationException();
- }
-
- public void updateNClob(
- String columnLabel, Reader reader) throws SQLException {
- throw new UnsupportedOperationException();
- }
-
- public <T> T getObject(int columnIndex, Class<T> type) throws SQLException {
- return getAccessor(columnIndex).getObject(type);
- }
-
- public <T> T getObject(
- String columnLabel, Class<T> type) throws SQLException {
- return getAccessor(columnLabel).getObject(type);
- }
-
- public <T> T unwrap(Class<T> iface) throws SQLException {
- if (iface.isInstance(this)) {
- return iface.cast(this);
- }
- throw statement.connection.helper.createException(
- "does not implement '" + iface + "'");
- }
-
- public boolean isWrapperFor(Class<?> iface) throws SQLException {
- return iface.isInstance(this);
- }
-}
-
-// End AvaticaResultSet.java
http://git-wip-us.apache.org/repos/asf/calcite/blob/5cee486f/avatica/src/main/java/org/apache/calcite/avatica/AvaticaResultSetMetaData.java
----------------------------------------------------------------------
diff --git a/avatica/src/main/java/org/apache/calcite/avatica/AvaticaResultSetMetaData.java b/avatica/src/main/java/org/apache/calcite/avatica/AvaticaResultSetMetaData.java
deleted file mode 100644
index b4e8892..0000000
--- a/avatica/src/main/java/org/apache/calcite/avatica/AvaticaResultSetMetaData.java
+++ /dev/null
@@ -1,145 +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.calcite.avatica;
-
-import java.sql.ResultSetMetaData;
-import java.sql.SQLException;
-
-/**
- * Implementation of {@link ResultSetMetaData}
- * for the Avatica framework.
- */
-public class AvaticaResultSetMetaData implements ResultSetMetaData {
- final AvaticaStatement statement;
- final Object query; // reserved for future use
- final Meta.Signature signature;
-
- public AvaticaResultSetMetaData(
- AvaticaStatement statement,
- Object query,
- Meta.Signature signature) {
- this.statement = statement;
- this.query = query;
- this.signature = signature;
- }
-
- private ColumnMetaData getColumnMetaData(int column) {
- return signature.columns.get(column - 1);
- }
-
- // implement ResultSetMetaData
-
- public int getColumnCount() throws SQLException {
- return signature.columns.size();
- }
-
- public boolean isAutoIncrement(int column) throws SQLException {
- return getColumnMetaData(column).autoIncrement;
- }
-
- public boolean isCaseSensitive(int column) throws SQLException {
- return getColumnMetaData(column).caseSensitive;
- }
-
- public boolean isSearchable(int column) throws SQLException {
- return getColumnMetaData(column).searchable;
- }
-
- public boolean isCurrency(int column) throws SQLException {
- return getColumnMetaData(column).currency;
- }
-
- public int isNullable(int column) throws SQLException {
- return getColumnMetaData(column).nullable;
- }
-
- public boolean isSigned(int column) throws SQLException {
- return getColumnMetaData(column).signed;
- }
-
- public int getColumnDisplaySize(int column) throws SQLException {
- return getColumnMetaData(column).displaySize;
- }
-
- public String getColumnLabel(int column) throws SQLException {
- return getColumnMetaData(column).label;
- }
-
- public String getColumnName(int column) throws SQLException {
- return getColumnMetaData(column).columnName;
- }
-
- public String getSchemaName(int column) throws SQLException {
- return getColumnMetaData(column).schemaName;
- }
-
- public int getPrecision(int column) throws SQLException {
- return getColumnMetaData(column).precision;
- }
-
- public int getScale(int column) throws SQLException {
- return getColumnMetaData(column).scale;
- }
-
- public String getTableName(int column) throws SQLException {
- return getColumnMetaData(column).tableName;
- }
-
- public String getCatalogName(int column) throws SQLException {
- return getColumnMetaData(column).catalogName;
- }
-
- public int getColumnType(int column) throws SQLException {
- return getColumnMetaData(column).type.id;
- }
-
- public String getColumnTypeName(int column) throws SQLException {
- return getColumnMetaData(column).type.name;
- }
-
- public boolean isReadOnly(int column) throws SQLException {
- return getColumnMetaData(column).readOnly;
- }
-
- public boolean isWritable(int column) throws SQLException {
- return getColumnMetaData(column).writable;
- }
-
- public boolean isDefinitelyWritable(int column) throws SQLException {
- return getColumnMetaData(column).definitelyWritable;
- }
-
- public String getColumnClassName(int column) throws SQLException {
- return getColumnMetaData(column).columnClassName;
- }
-
- // implement Wrapper
-
- public <T> T unwrap(Class<T> iface) throws SQLException {
- if (iface.isInstance(this)) {
- return iface.cast(this);
- }
- throw statement.connection.helper.createException(
- "does not implement '" + iface + "'");
- }
-
- public boolean isWrapperFor(Class<?> iface) throws SQLException {
- return iface.isInstance(this);
- }
-}
-
-// End AvaticaResultSetMetaData.java
http://git-wip-us.apache.org/repos/asf/calcite/blob/5cee486f/avatica/src/main/java/org/apache/calcite/avatica/AvaticaSeverity.java
----------------------------------------------------------------------
diff --git a/avatica/src/main/java/org/apache/calcite/avatica/AvaticaSeverity.java b/avatica/src/main/java/org/apache/calcite/avatica/AvaticaSeverity.java
deleted file mode 100644
index 675c8af..0000000
--- a/avatica/src/main/java/org/apache/calcite/avatica/AvaticaSeverity.java
+++ /dev/null
@@ -1,90 +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.calcite.avatica;
-
-import org.apache.calcite.avatica.proto.Common;
-
-import java.util.Objects;
-
-/**
- * An enumeration that denotes the severity of a given unexpected state.
- */
-public enum AvaticaSeverity {
- /**
- * The severity of the outcome of some unexpected state is unknown.
- */
- UNKNOWN(0),
-
- /**
- * The system has been left in an unrecoverable state as a result of an operation.
- */
- FATAL(1),
-
- /**
- * The result of an action resulted in an error which the current operation cannot recover
- * from. Clients can attempt to execute the operation again.
- */
- ERROR(2),
-
- /**
- * The operation completed successfully but a message was generated to warn the client about
- * some unexpected state or action.
- */
- WARNING(3);
-
- private final int value;
-
- AvaticaSeverity(int value) {
- this.value = value;
- }
-
- public int getValue() {
- return value;
- }
-
- public Common.Severity toProto() {
- switch (this) {
- case UNKNOWN:
- return Common.Severity.UNKNOWN_SEVERITY;
- case FATAL:
- return Common.Severity.FATAL_SEVERITY;
- case ERROR:
- return Common.Severity.ERROR_SEVERITY;
- case WARNING:
- return Common.Severity.WARNING_SEVERITY;
- default:
- throw new RuntimeException("Unhandled Severity level: " + this);
- }
- }
-
- public static AvaticaSeverity fromProto(Common.Severity proto) {
- switch (Objects.requireNonNull(proto)) {
- case UNKNOWN_SEVERITY:
- return AvaticaSeverity.UNKNOWN;
- case FATAL_SEVERITY:
- return AvaticaSeverity.FATAL;
- case ERROR_SEVERITY:
- return AvaticaSeverity.ERROR;
- case WARNING_SEVERITY:
- return AvaticaSeverity.WARNING;
- default:
- throw new RuntimeException("Unhandled protobuf Severity level: " + proto);
- }
- }
-}
-
-// End AvaticaSeverity.java
http://git-wip-us.apache.org/repos/asf/calcite/blob/5cee486f/avatica/src/main/java/org/apache/calcite/avatica/AvaticaSite.java
----------------------------------------------------------------------
diff --git a/avatica/src/main/java/org/apache/calcite/avatica/AvaticaSite.java b/avatica/src/main/java/org/apache/calcite/avatica/AvaticaSite.java
deleted file mode 100644
index 7fd6947..0000000
--- a/avatica/src/main/java/org/apache/calcite/avatica/AvaticaSite.java
+++ /dev/null
@@ -1,587 +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.calcite.avatica;
-
-import org.apache.calcite.avatica.remote.TypedValue;
-import org.apache.calcite.avatica.util.Cursor;
-
-import java.io.InputStream;
-import java.io.Reader;
-import java.math.BigDecimal;
-import java.math.BigInteger;
-import java.net.URL;
-import java.sql.Array;
-import java.sql.Blob;
-import java.sql.Clob;
-import java.sql.Date;
-import java.sql.NClob;
-import java.sql.Ref;
-import java.sql.RowId;
-import java.sql.SQLException;
-import java.sql.SQLXML;
-import java.sql.Time;
-import java.sql.Timestamp;
-import java.sql.Types;
-import java.util.Calendar;
-
-/**
- * A location that a value can be written to or read from.
- */
-public class AvaticaSite {
- final AvaticaParameter parameter;
-
- /** Calendar is not thread-safe. But calendar is only used from within one
- * thread, and we have to trust that clients are not modifying calendars
- * that they pass to us in a method such as
- * {@link java.sql.PreparedStatement#setTime(int, Time, Calendar)}, so we do
- * not need to synchronize access. */
- final Calendar calendar;
- private final int index;
- final TypedValue[] slots;
-
- /** Value that means the parameter has been set to null.
- * If value is null, parameter has not been set. */
- public static final Object DUMMY_VALUE = Dummy.INSTANCE;
-
- public AvaticaSite(AvaticaParameter parameter, Calendar calendar, int index,
- TypedValue[] slots) {
- assert calendar != null;
- assert parameter != null;
- assert slots != null;
- this.parameter = parameter;
- this.calendar = calendar;
- this.index = index;
- this.slots = slots;
- }
-
- private TypedValue wrap(ColumnMetaData.Rep rep, Object o,
- Calendar calendar) {
- return TypedValue.ofJdbc(rep, o, calendar);
- }
-
- private TypedValue wrap(ColumnMetaData.Rep rep, Object o) {
- return TypedValue.ofJdbc(rep, o, calendar);
- }
-
- public boolean isSet(int index) {
- return slots[index] != null;
- }
-
- public void setByte(byte o) {
- slots[index] = wrap(ColumnMetaData.Rep.BYTE, o);
- }
-
- public void setChar(char o) {
- slots[index] = wrap(ColumnMetaData.Rep.CHARACTER, o);
- }
-
- public void setShort(short o) {
- slots[index] = wrap(ColumnMetaData.Rep.SHORT, o);
- }
-
- public void setInt(int o) {
- slots[index] = wrap(ColumnMetaData.Rep.INTEGER, o);
- }
-
- public void setLong(long o) {
- slots[index] = wrap(ColumnMetaData.Rep.LONG, o);
- }
-
- public void setBoolean(boolean o) {
- slots[index] = wrap(ColumnMetaData.Rep.BOOLEAN, o);
- }
-
- public void setRowId(RowId x) {
- slots[index] = wrap(ColumnMetaData.Rep.OBJECT, x);
- }
-
- public void setNString(String o) {
- slots[index] = wrap(ColumnMetaData.Rep.STRING, o);
- }
-
- public void setNCharacterStream(Reader value, long length) {
- }
-
- public void setNClob(NClob value) {
- slots[index] = wrap(ColumnMetaData.Rep.OBJECT, value);
- }
-
- public void setClob(Reader reader, long length) {
- }
-
- public void setBlob(InputStream inputStream, long length) {
- }
-
- public void setNClob(Reader reader, long length) {
- }
-
- public void setSQLXML(SQLXML xmlObject) {
- slots[index] = wrap(ColumnMetaData.Rep.OBJECT, xmlObject);
- }
-
- public void setAsciiStream(InputStream x, long length) {
- }
-
- public void setBinaryStream(InputStream x, long length) {
- }
-
- public void setCharacterStream(Reader reader, long length) {
- }
-
- public void setAsciiStream(InputStream x) {
- }
-
- public void setBinaryStream(InputStream x) {
- }
-
- public void setCharacterStream(Reader reader) {
- }
-
- public void setNCharacterStream(Reader value) {
- }
-
- public void setClob(Reader reader) {
- }
-
- public void setBlob(InputStream inputStream) {
- }
-
- public void setNClob(Reader reader) {
- }
-
- public void setUnicodeStream(InputStream x, int length) {
- }
-
- public void setFloat(float x) {
- slots[index] = wrap(ColumnMetaData.Rep.FLOAT, x);
- }
-
- public void setDouble(double x) {
- slots[index] = wrap(ColumnMetaData.Rep.DOUBLE, x);
- }
-
- public void setBigDecimal(BigDecimal x) {
- slots[index] = wrap(ColumnMetaData.Rep.NUMBER, x);
- }
-
- public void setString(String x) {
- slots[index] = wrap(ColumnMetaData.Rep.STRING, x);
- }
-
- public void setBytes(byte[] x) {
- slots[index] = wrap(ColumnMetaData.Rep.BYTE_STRING, x);
- }
-
- public void setTimestamp(Timestamp x, Calendar calendar) {
- slots[index] = wrap(ColumnMetaData.Rep.JAVA_SQL_TIMESTAMP, x, calendar);
- }
-
- public void setTime(Time x, Calendar calendar) {
- slots[index] = wrap(ColumnMetaData.Rep.JAVA_SQL_TIME, x, calendar);
- }
-
- public void setDate(Date x, Calendar cal) {
- slots[index] = wrap(ColumnMetaData.Rep.JAVA_SQL_DATE, x, calendar);
- }
-
- public void setObject(Object x, int targetSqlType) {
- if (x == null || Types.NULL == targetSqlType) {
- setNull(targetSqlType);
- return;
- }
- switch (targetSqlType) {
- case Types.CLOB:
- case Types.DATALINK:
- case Types.NCLOB:
- case Types.OTHER:
- case Types.REF:
- case Types.SQLXML:
- case Types.STRUCT:
- throw notImplemented();
- case Types.ARRAY:
- setArray(toArray(x));
- break;
- case Types.BIGINT:
- setLong(toLong(x));
- break;
- case Types.BINARY:
- case Types.LONGVARBINARY:
- case Types.VARBINARY:
- setBytes(toBytes(x));
- break;
- case Types.BIT:
- case Types.BOOLEAN:
- setBoolean(toBoolean(x));
- break;
- case Types.BLOB:
- if (x instanceof Blob) {
- setBlob((Blob) x);
- break;
- } else if (x instanceof InputStream) {
- setBlob((InputStream) x);
- }
- throw unsupportedCast(x.getClass(), Blob.class);
- case Types.DATE:
- setDate(toDate(x), calendar);
- break;
- case Types.DECIMAL:
- case Types.NUMERIC:
- setBigDecimal(toBigDecimal(x));
- break;
- case Types.DISTINCT:
- throw notImplemented();
- case Types.DOUBLE:
- case Types.FLOAT: // yes really; SQL FLOAT is up to 8 bytes
- setDouble(toDouble(x));
- break;
- case Types.INTEGER:
- setInt(toInt(x));
- break;
- case Types.JAVA_OBJECT:
- setObject(x);
- break;
- case Types.LONGNVARCHAR:
- case Types.LONGVARCHAR:
- case Types.NVARCHAR:
- case Types.VARCHAR:
- case Types.CHAR:
- case Types.NCHAR:
- setString(toString(x));
- break;
- case Types.REAL:
- setFloat(toFloat(x));
- break;
- case Types.ROWID:
- if (x instanceof RowId) {
- setRowId((RowId) x);
- break;
- }
- throw unsupportedCast(x.getClass(), RowId.class);
- case Types.SMALLINT:
- setShort(toShort(x));
- break;
- case Types.TIME:
- setTime(toTime(x), calendar);
- break;
- case Types.TIMESTAMP:
- setTimestamp(toTimestamp(x), calendar);
- break;
- case Types.TINYINT:
- setByte(toByte(x));
- break;
- default:
- throw notImplemented();
- }
- }
-
- /** Similar logic to {@link #setObject}. */
- public static Object get(Cursor.Accessor accessor, int targetSqlType,
- Calendar localCalendar) throws SQLException {
- switch (targetSqlType) {
- case Types.CLOB:
- case Types.DATALINK:
- case Types.NCLOB:
- case Types.REF:
- case Types.SQLXML:
- case Types.STRUCT:
- throw notImplemented();
- case Types.ARRAY:
- return accessor.getArray();
- case Types.BIGINT:
- final long aLong = accessor.getLong();
- if (aLong == 0 && accessor.wasNull()) {
- return null;
- }
- return aLong;
- case Types.BINARY:
- case Types.LONGVARBINARY:
- case Types.VARBINARY:
- return accessor.getBytes();
- case Types.BIT:
- case Types.BOOLEAN:
- final boolean aBoolean = accessor.getBoolean();
- if (!aBoolean && accessor.wasNull()) {
- return null;
- }
- return aBoolean;
- case Types.BLOB:
- return accessor.getBlob();
- case Types.DATE:
- return accessor.getDate(localCalendar);
- case Types.DECIMAL:
- case Types.NUMERIC:
- return accessor.getBigDecimal();
- case Types.DISTINCT:
- throw notImplemented();
- case Types.DOUBLE:
- case Types.FLOAT: // yes really; SQL FLOAT is up to 8 bytes
- final double aDouble = accessor.getDouble();
- if (aDouble == 0 && accessor.wasNull()) {
- return null;
- }
- return aDouble;
- case Types.INTEGER:
- final int anInt = accessor.getInt();
- if (anInt == 0 && accessor.wasNull()) {
- return null;
- }
- return anInt;
- case Types.JAVA_OBJECT:
- case Types.OTHER:
- return accessor.getObject();
- case Types.LONGNVARCHAR:
- case Types.LONGVARCHAR:
- case Types.NVARCHAR:
- case Types.VARCHAR:
- case Types.CHAR:
- case Types.NCHAR:
- return accessor.getString();
- case Types.REAL:
- final float aFloat = accessor.getFloat();
- if (aFloat == 0 && accessor.wasNull()) {
- return null;
- }
- return aFloat;
- case Types.ROWID:
- throw notImplemented();
- case Types.SMALLINT:
- final short aShort = accessor.getShort();
- if (aShort == 0 && accessor.wasNull()) {
- return null;
- }
- return aShort;
- case Types.TIME:
- return accessor.getTime(localCalendar);
- case Types.TIMESTAMP:
- return accessor.getTimestamp(localCalendar);
- case Types.TINYINT:
- final byte aByte = accessor.getByte();
- if (aByte == 0 && accessor.wasNull()) {
- return null;
- }
- return aByte;
- default:
- throw notImplemented();
- }
- }
-
- public void setObject(Object x) {
- slots[index] = TypedValue.ofJdbc(x, calendar);
- }
-
- public void setNull(int sqlType) {
- slots[index] = wrap(ColumnMetaData.Rep.OBJECT, null);
- }
-
- public void setRef(Ref x) {
- }
-
- public void setBlob(Blob x) {
- }
-
- public void setClob(Clob x) {
- }
-
- public void setArray(Array x) {
- }
-
- public void setNull(int sqlType, String typeName) {
- }
-
- public void setURL(URL x) {
- }
-
- public void setObject(Object x, int targetSqlType,
- int scaleOrLength) {
- }
-
- private static RuntimeException unsupportedCast(Class<?> from, Class<?> to) {
- return new UnsupportedOperationException("Cannot convert from "
- + from.getCanonicalName() + " to " + to.getCanonicalName());
- }
-
- private static RuntimeException notImplemented() {
- return new RuntimeException("not implemented");
- }
-
- private static Array toArray(Object x) {
- if (x instanceof Array) {
- return (Array) x;
- }
- throw unsupportedCast(x.getClass(), Array.class);
- }
-
- public static BigDecimal toBigDecimal(Object x) {
- if (x instanceof BigDecimal) {
- return (BigDecimal) x;
- } else if (x instanceof BigInteger) {
- return new BigDecimal((BigInteger) x);
- } else if (x instanceof Number) {
- if (x instanceof Double || x instanceof Float) {
- return new BigDecimal(((Number) x).doubleValue());
- } else {
- return new BigDecimal(((Number) x).longValue());
- }
- } else if (x instanceof Boolean) {
- return (Boolean) x ? BigDecimal.ONE : BigDecimal.ZERO;
- } else if (x instanceof String) {
- return new BigDecimal((String) x);
- }
- throw unsupportedCast(x.getClass(), BigDecimal.class);
- }
-
- private static boolean toBoolean(Object x) {
- if (x instanceof Boolean) {
- return (Boolean) x;
- } else if (x instanceof Number) {
- return ((Number) x).intValue() != 0;
- } else if (x instanceof String) {
- String s = (String) x;
- if (s.equalsIgnoreCase("true") || s.equalsIgnoreCase("yes")) {
- return true;
- } else if (s.equalsIgnoreCase("false") || s.equalsIgnoreCase("no")) {
- return false;
- }
- }
- throw unsupportedCast(x.getClass(), Boolean.TYPE);
- }
-
- private static byte toByte(Object x) {
- if (x instanceof Number) {
- return ((Number) x).byteValue();
- } else if (x instanceof Boolean) {
- return (Boolean) x ? (byte) 1 : (byte) 0;
- } else if (x instanceof String) {
- return Byte.parseByte((String) x);
- } else {
- throw unsupportedCast(x.getClass(), Byte.TYPE);
- }
- }
-
- private static byte[] toBytes(Object x) {
- if (x instanceof byte[]) {
- return (byte[]) x;
- }
- if (x instanceof String) {
- return ((String) x).getBytes();
- }
- throw unsupportedCast(x.getClass(), byte[].class);
- }
-
- private static Date toDate(Object x) {
- if (x instanceof String) {
- return Date.valueOf((String) x);
- }
- return new Date(toLong(x));
- }
-
- private static Time toTime(Object x) {
- if (x instanceof String) {
- return Time.valueOf((String) x);
- }
- return new Time(toLong(x));
- }
-
- private static Timestamp toTimestamp(Object x) {
- if (x instanceof String) {
- return Timestamp.valueOf((String) x);
- }
- return new Timestamp(toLong(x));
- }
-
- private static double toDouble(Object x) {
- if (x instanceof Number) {
- return ((Number) x).doubleValue();
- } else if (x instanceof Boolean) {
- return (Boolean) x ? 1D : 0D;
- } else if (x instanceof String) {
- return Double.parseDouble((String) x);
- } else {
- throw unsupportedCast(x.getClass(), Double.TYPE);
- }
- }
-
- private static float toFloat(Object x) {
- if (x instanceof Number) {
- return ((Number) x).floatValue();
- } else if (x instanceof Boolean) {
- return (Boolean) x ? 1F : 0F;
- } else if (x instanceof String) {
- return Float.parseFloat((String) x);
- } else {
- throw unsupportedCast(x.getClass(), Float.TYPE);
- }
- }
-
- private static int toInt(Object x) {
- if (x instanceof Number) {
- return ((Number) x).intValue();
- } else if (x instanceof Boolean) {
- return (Boolean) x ? 1 : 0;
- } else if (x instanceof String) {
- return Integer.parseInt((String) x);
- } else {
- throw unsupportedCast(x.getClass(), Integer.TYPE);
- }
- }
-
- private static long toLong(Object x) {
- if (x instanceof Number) {
- return ((Number) x).longValue();
- } else if (x instanceof Boolean) {
- return (Boolean) x ? 1L : 0L;
- } else if (x instanceof String) {
- return Long.parseLong((String) x);
- } else {
- throw unsupportedCast(x.getClass(), Long.TYPE);
- }
- }
-
- private static short toShort(Object x) {
- if (x instanceof Number) {
- return ((Number) x).shortValue();
- } else if (x instanceof Boolean) {
- return (Boolean) x ? (short) 1 : (short) 0;
- } else if (x instanceof String) {
- return Short.parseShort((String) x);
- } else {
- throw unsupportedCast(x.getClass(), Short.TYPE);
- }
- }
-
- private static String toString(Object x) {
- if (x instanceof String) {
- return (String) x;
- } else if (x instanceof Character
- || x instanceof Boolean) {
- return x.toString();
- }
- throw unsupportedCast(x.getClass(), String.class);
- }
-
- /** Singleton value to denote parameters that have been set to null (as
- * opposed to not set).
- *
- * <p>Not a valid value for a parameter.
- *
- * <p>As an enum, it is serializable by Jackson. */
- private enum Dummy {
- INSTANCE
- }
-}
-
-// End AvaticaSite.java
http://git-wip-us.apache.org/repos/asf/calcite/blob/5cee486f/avatica/src/main/java/org/apache/calcite/avatica/AvaticaSqlException.java
----------------------------------------------------------------------
diff --git a/avatica/src/main/java/org/apache/calcite/avatica/AvaticaSqlException.java b/avatica/src/main/java/org/apache/calcite/avatica/AvaticaSqlException.java
deleted file mode 100644
index 9408a7b..0000000
--- a/avatica/src/main/java/org/apache/calcite/avatica/AvaticaSqlException.java
+++ /dev/null
@@ -1,138 +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.calcite.avatica;
-
-import java.io.PrintStream;
-import java.io.PrintWriter;
-import java.sql.SQLException;
-import java.util.List;
-import java.util.Objects;
-
-/**
- * A client-facing {@link SQLException} which encapsulates errors from the remote Avatica server.
- */
-public class AvaticaSqlException extends SQLException {
-
- private static final long serialVersionUID = 1L;
-
- private final String errorMessage;
- private final List<String> stackTraces;
- private final String remoteServer;
-
- /**
- * Construct the Exception with information from the server.
- *
- * @param errorMessage A human-readable error message.
- * @param errorCode An integer corresponding to a known error.
- * @param stackTraces Server-side stacktrace.
- * @param remoteServer The host:port where the Avatica server is located
- */
- public AvaticaSqlException(String errorMessage, String sqlState, int errorCode,
- List<String> stackTraces, String remoteServer) {
- super("Error " + errorCode + " (" + sqlState + ") : " + errorMessage, sqlState, errorCode);
- this.errorMessage = errorMessage;
- this.stackTraces = Objects.requireNonNull(stackTraces);
- this.remoteServer = remoteServer;
- }
-
- public String getErrorMessage() {
- return errorMessage;
- }
-
- /**
- * @return The stacktraces for exceptions thrown on the Avatica server.
- */
- public List<String> getStackTraces() {
- return stackTraces;
- }
-
- /**
- * @return The host:port for the remote Avatica server. May be null.
- */
- public String getRemoteServer() {
- return remoteServer;
- }
-
- // printStackTrace() will get redirected to printStackTrace(PrintStream), don't need to override.
-
- @Override public void printStackTrace(PrintStream stream) {
- super.printStackTrace(stream);
- stream.flush();
- printServerStackTrace(new PrintStreamOrWriter(stream));
- }
-
- @Override public void printStackTrace(PrintWriter writer) {
- super.printStackTrace(writer);
- writer.flush();
- printServerStackTrace(new PrintStreamOrWriter(writer));
- }
-
- void printServerStackTrace(PrintStreamOrWriter streamOrWriter) {
- for (String serverStackTrace : this.stackTraces) {
- streamOrWriter.println(serverStackTrace);
- }
- }
-
- /**
- * A class that encapsulates either a PrintStream or a PrintWriter.
- */
- private static class PrintStreamOrWriter {
- /**
- * Enumeration to differentiate between a PrintStream and a PrintWriter.
- */
- private enum Type {
- STREAM,
- WRITER
- }
-
- private PrintStream stream;
- private PrintWriter writer;
- private final Type type;
-
- public PrintStreamOrWriter(PrintStream stream) {
- this.stream = stream;
- type = Type.STREAM;
- }
-
- public PrintStreamOrWriter(PrintWriter writer) {
- this.writer = writer;
- type = Type.WRITER;
- }
-
- /**
- * Prints the given string to the the provided stream or writer.
- *
- * @param string The string to print
- */
- public void println(String string) {
- switch (type) {
- case STREAM:
- stream.println(string);
- stream.flush();
- return;
- case WRITER:
- writer.println(string);
- writer.flush();
- return;
- default:
- throw new IllegalStateException();
- }
- }
- }
-}
-
-// End AvaticaSqlException.java
http://git-wip-us.apache.org/repos/asf/calcite/blob/5cee486f/avatica/src/main/java/org/apache/calcite/avatica/AvaticaStatement.java
----------------------------------------------------------------------
diff --git a/avatica/src/main/java/org/apache/calcite/avatica/AvaticaStatement.java b/avatica/src/main/java/org/apache/calcite/avatica/AvaticaStatement.java
deleted file mode 100644
index cfd1d45..0000000
--- a/avatica/src/main/java/org/apache/calcite/avatica/AvaticaStatement.java
+++ /dev/null
@@ -1,527 +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.calcite.avatica;
-
-import org.apache.calcite.avatica.remote.TypedValue;
-
-import java.sql.CallableStatement;
-import java.sql.PreparedStatement;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.sql.SQLWarning;
-import java.sql.Statement;
-import java.util.Collections;
-import java.util.List;
-import java.util.Objects;
-
-/**
- * Implementation of {@link java.sql.Statement}
- * for the Avatica engine.
- */
-public abstract class AvaticaStatement
- implements Statement {
- /** The default value for {@link Statement#getFetchSize()}. */
- public static final int DEFAULT_FETCH_SIZE = 100;
-
- public final AvaticaConnection connection;
- /** Statement id; unique within connection. */
- public Meta.StatementHandle handle;
- protected boolean closed;
-
- /**
- * Support for {@link #closeOnCompletion()} method.
- */
- protected boolean closeOnCompletion;
-
- /**
- * Current result set, or null if the statement is not executing anything.
- * Any method which modifies this member must synchronize
- * on the AvaticaStatement.
- */
- protected AvaticaResultSet openResultSet;
-
- /** Current update count. Same lifecycle as {@link #openResultSet}. */
- protected long updateCount;
-
- private int queryTimeoutMillis;
- final int resultSetType;
- final int resultSetConcurrency;
- final int resultSetHoldability;
- private int fetchSize = DEFAULT_FETCH_SIZE;
- private int fetchDirection;
- protected long maxRowCount = 0;
-
- private Meta.Signature signature;
-
- protected void setSignature(Meta.Signature signature) {
- this.signature = signature;
- }
-
- protected Meta.Signature getSignature() {
- return signature;
- }
-
- public Meta.StatementType getStatementType() {
- return signature.statementType;
- }
-
- /**
- * Creates an AvaticaStatement.
- *
- * @param connection Connection
- * @param h Statement handle
- * @param resultSetType Result set type
- * @param resultSetConcurrency Result set concurrency
- * @param resultSetHoldability Result set holdability
- */
- protected AvaticaStatement(AvaticaConnection connection,
- Meta.StatementHandle h, int resultSetType, int resultSetConcurrency,
- int resultSetHoldability) {
- this(connection, h, resultSetType, resultSetConcurrency, resultSetHoldability, null);
- }
-
- protected AvaticaStatement(AvaticaConnection connection,
- Meta.StatementHandle h, int resultSetType, int resultSetConcurrency,
- int resultSetHoldability, Meta.Signature signature) {
- this.connection = Objects.requireNonNull(connection);
- this.resultSetType = resultSetType;
- this.resultSetConcurrency = resultSetConcurrency;
- this.resultSetHoldability = resultSetHoldability;
- this.signature = signature;
- this.closed = false;
- if (h == null) {
- final Meta.ConnectionHandle ch = connection.handle;
- h = connection.meta.createStatement(ch);
- }
- connection.statementMap.put(h.id, this);
- this.handle = h;
- }
-
- /** Returns the identifier of the statement, unique within its connection. */
- public int getId() {
- return handle.id;
- }
-
- private void checkNotPreparedOrCallable(String s) throws SQLException {
- if (this instanceof PreparedStatement
- || this instanceof CallableStatement) {
- throw connection.helper.createException("Cannot call " + s
- + " on prepared or callable statement");
- }
- }
-
- protected void executeInternal(String sql) throws SQLException {
- // reset previous state before moving forward.
- this.updateCount = -1;
- try {
- // In JDBC, maxRowCount = 0 means no limit; in prepare it means LIMIT 0
- final long maxRowCount1 = maxRowCount <= 0 ? -1 : maxRowCount;
- for (int i = 0; i < connection.maxRetriesPerExecute; i++) {
- try {
- Meta.ExecuteResult x =
- connection.prepareAndExecuteInternal(this, sql, maxRowCount1);
- return;
- } catch (NoSuchStatementException e) {
- resetStatement();
- }
- }
- } catch (RuntimeException e) {
- throw connection.helper.createException("Error while executing SQL \"" + sql + "\": "
- + e.getMessage(), e);
- }
-
- throw new RuntimeException("Failed to successfully execute query after "
- + connection.maxRetriesPerExecute + " attempts.");
- }
-
- protected void resetStatement() {
- // Invalidate the old statement
- connection.statementMap.remove(handle.id);
- // Get a new one
- final Meta.ConnectionHandle ch = new Meta.ConnectionHandle(connection.id);
- Meta.StatementHandle h = connection.meta.createStatement(ch);
- // Cache it in the connection
- connection.statementMap.put(h.id, this);
- // Update the local state and try again
- this.handle = h;
- }
-
- /**
- * Re-initialize the ResultSet on the server with the given state.
- * @param state The ResultSet's state.
- * @param offset Offset into the desired ResultSet
- * @return True if the ResultSet has more results, false if there are no more results.
- */
- protected boolean syncResults(QueryState state, long offset) throws NoSuchStatementException {
- return connection.meta.syncResults(handle, state, offset);
- }
-
- // implement Statement
-
- public boolean execute(String sql) throws SQLException {
- checkNotPreparedOrCallable("execute(String)");
- executeInternal(sql);
- // Result set is null for DML or DDL.
- // Result set is closed if user cancelled the query.
- return openResultSet != null && !openResultSet.isClosed();
- }
-
- public ResultSet executeQuery(String sql) throws SQLException {
- checkNotPreparedOrCallable("executeQuery(String)");
- try {
- executeInternal(sql);
- if (openResultSet == null) {
- throw connection.helper.createException(
- "Statement did not return a result set");
- }
- return openResultSet;
- } catch (RuntimeException e) {
- throw connection.helper.createException("Error while executing SQL \"" + sql + "\": "
- + e.getMessage(), e);
- }
- }
-
- public final int executeUpdate(String sql) throws SQLException {
- return (int) executeLargeUpdate(sql);
- }
-
- public long executeLargeUpdate(String sql) throws SQLException {
- checkNotPreparedOrCallable("executeUpdate(String)");
- executeInternal(sql);
- return updateCount;
- }
-
- public synchronized void close() throws SQLException {
- try {
- close_();
- } catch (RuntimeException e) {
- throw connection.helper.createException("While closing statement", e);
- }
- }
-
- protected void close_() {
- if (!closed) {
- closed = true;
- if (openResultSet != null) {
- AvaticaResultSet c = openResultSet;
- openResultSet = null;
- c.close();
- }
- try {
- // inform the server to close the resource
- connection.meta.closeStatement(handle);
- } finally {
- // make sure we don't leak on our side
- connection.statementMap.remove(handle.id);
- }
- // If onStatementClose throws, this method will throw an exception (later
- // converted to SQLException), but this statement still gets closed.
- connection.driver.handler.onStatementClose(this);
- }
- }
-
- public int getMaxFieldSize() throws SQLException {
- throw connection.helper.unsupported();
- }
-
- public void setMaxFieldSize(int max) throws SQLException {
- throw connection.helper.unsupported();
- }
-
- public final int getMaxRows() {
- return (int) getLargeMaxRows();
- }
-
- public long getLargeMaxRows() {
- return maxRowCount;
- }
-
- public final void setMaxRows(int maxRowCount) throws SQLException {
- setLargeMaxRows(maxRowCount);
- }
-
- public void setLargeMaxRows(long maxRowCount) throws SQLException {
- if (maxRowCount < 0) {
- throw connection.helper.createException(
- "illegal maxRows value: " + maxRowCount);
- }
- this.maxRowCount = maxRowCount;
- }
-
- public void setEscapeProcessing(boolean enable) throws SQLException {
- throw connection.helper.unsupported();
- }
-
- public int getQueryTimeout() throws SQLException {
- long timeoutSeconds = getQueryTimeoutMillis() / 1000;
- if (timeoutSeconds > Integer.MAX_VALUE) {
- return Integer.MAX_VALUE;
- }
- if (timeoutSeconds == 0 && getQueryTimeoutMillis() > 0) {
- // Don't return timeout=0 if e.g. timeoutMillis=500. 0 is special.
- return 1;
- }
- return (int) timeoutSeconds;
- }
-
- int getQueryTimeoutMillis() {
- return queryTimeoutMillis;
- }
-
- public void setQueryTimeout(int seconds) throws SQLException {
- if (seconds < 0) {
- throw connection.helper.createException(
- "illegal timeout value " + seconds);
- }
- setQueryTimeoutMillis(seconds * 1000);
- }
-
- void setQueryTimeoutMillis(int millis) {
- this.queryTimeoutMillis = millis;
- }
-
- public synchronized void cancel() throws SQLException {
- if (openResultSet != null) {
- openResultSet.cancel();
- }
- }
-
- public SQLWarning getWarnings() throws SQLException {
- return null; // no warnings, since warnings are not supported
- }
-
- public void clearWarnings() throws SQLException {
- // no-op since warnings are not supported
- }
-
- public void setCursorName(String name) throws SQLException {
- throw connection.helper.unsupported();
- }
-
- public ResultSet getResultSet() throws SQLException {
- // NOTE: result set becomes visible in this member while
- // executeQueryInternal is still in progress, and before it has
- // finished executing. Its internal state may not be ready for API
- // calls. JDBC never claims to be thread-safe! (Except for calls to the
- // cancel method.) It is not possible to synchronize, because it would
- // block 'cancel'.
- return openResultSet;
- }
-
- public int getUpdateCount() throws SQLException {
- return (int) updateCount;
- }
-
- public long getLargeUpdateCount() throws SQLException {
- return updateCount;
- }
-
- public boolean getMoreResults() throws SQLException {
- throw connection.helper.unsupported();
- }
-
- public void setFetchDirection(int direction) throws SQLException {
- this.fetchDirection = direction;
- }
-
- public int getFetchDirection() {
- return fetchDirection;
- }
-
- public void setFetchSize(int rows) throws SQLException {
- this.fetchSize = rows;
- }
-
- public int getFetchSize() {
- return fetchSize;
- }
-
- public int getResultSetConcurrency() throws SQLException {
- throw connection.helper.unsupported();
- }
-
- public int getResultSetType() throws SQLException {
- throw connection.helper.unsupported();
- }
-
- public void addBatch(String sql) throws SQLException {
- throw connection.helper.unsupported();
- }
-
- public void clearBatch() throws SQLException {
- throw connection.helper.unsupported();
- }
-
- public int[] executeBatch() throws SQLException {
- throw connection.helper.unsupported();
- }
-
- public AvaticaConnection getConnection() {
- return connection;
- }
-
- public boolean getMoreResults(int current) throws SQLException {
- throw connection.helper.unsupported();
- }
-
- public ResultSet getGeneratedKeys() throws SQLException {
- throw connection.helper.unsupported();
- }
-
- public int executeUpdate(
- String sql, int autoGeneratedKeys) throws SQLException {
- throw connection.helper.unsupported();
- }
-
- public int executeUpdate(
- String sql, int[] columnIndexes) throws SQLException {
- throw connection.helper.unsupported();
- }
-
- public int executeUpdate(
- String sql, String[] columnNames) throws SQLException {
- throw connection.helper.unsupported();
- }
-
- public boolean execute(
- String sql, int autoGeneratedKeys) throws SQLException {
- throw connection.helper.unsupported();
- }
-
- public boolean execute(
- String sql, int[] columnIndexes) throws SQLException {
- throw connection.helper.unsupported();
- }
-
- public boolean execute(
- String sql, String[] columnNames) throws SQLException {
- throw connection.helper.unsupported();
- }
-
- public int getResultSetHoldability() throws SQLException {
- throw connection.helper.unsupported();
- }
-
- public boolean isClosed() throws SQLException {
- return closed;
- }
-
- public void setPoolable(boolean poolable) throws SQLException {
- throw connection.helper.unsupported();
- }
-
- public boolean isPoolable() throws SQLException {
- throw connection.helper.unsupported();
- }
-
- // implements java.sql.Statement.closeOnCompletion (added in JDK 1.7)
- public void closeOnCompletion() throws SQLException {
- closeOnCompletion = true;
- }
-
- // implements java.sql.Statement.isCloseOnCompletion (added in JDK 1.7)
- public boolean isCloseOnCompletion() throws SQLException {
- return closeOnCompletion;
- }
-
- // implement Wrapper
-
- public <T> T unwrap(Class<T> iface) throws SQLException {
- if (iface.isInstance(this)) {
- return iface.cast(this);
- }
- throw connection.helper.createException(
- "does not implement '" + iface + "'");
- }
-
- public boolean isWrapperFor(Class<?> iface) throws SQLException {
- return iface.isInstance(this);
- }
-
- /**
- * Executes a prepared statement.
- *
- * @param signature Parsed statement
- * @param isUpdate if the execute is for an update
- *
- * @return as specified by {@link java.sql.Statement#execute(String)}
- * @throws java.sql.SQLException if a database error occurs
- */
- protected boolean executeInternal(Meta.Signature signature, boolean isUpdate)
- throws SQLException {
- ResultSet resultSet = executeQueryInternal(signature, isUpdate);
- // user may have cancelled the query
- if (resultSet.isClosed()) {
- return false;
- }
- return true;
- }
-
- /**
- * Executes a prepared query, closing any previously open result set.
- *
- * @param signature Parsed query
- * @param isUpdate If the execute is for an update
- * @return Result set
- * @throws java.sql.SQLException if a database error occurs
- */
- protected ResultSet executeQueryInternal(Meta.Signature signature, boolean isUpdate)
- throws SQLException {
- return connection.executeQueryInternal(this, signature, null, null, isUpdate);
- }
-
- /**
- * Called by each child result set when it is closed.
- *
- * @param resultSet Result set or cell set
- */
- void onResultSetClose(ResultSet resultSet) {
- if (closeOnCompletion) {
- close_();
- }
- }
-
- /** Returns the list of values of this statement's parameters.
- *
- * <p>Called at execute time. Not a public API.</p>
- *
- * <p>The default implementation returns the empty list, because non-prepared
- * statements have no parameters.</p>
- *
- * @see org.apache.calcite.avatica.AvaticaConnection.Trojan#getParameterValues(AvaticaStatement)
- */
- protected List<TypedValue> getParameterValues() {
- return Collections.emptyList();
- }
-
- /** Returns a list of bound parameter values.
- *
- * <p>If any of the parameters have not been bound, throws.
- * If parameters have been bound to null, the value in the list is null.
- */
- protected List<TypedValue> getBoundParameterValues() throws SQLException {
- final List<TypedValue> parameterValues = getParameterValues();
- for (Object parameterValue : parameterValues) {
- if (parameterValue == null) {
- throw new SQLException("unbound parameter");
- }
- }
- return parameterValues;
- }
-}
-
-// End AvaticaStatement.java