/* Copyright (c) 2007, 2012, Oracle and/or its affiliates. All rights reserved. The MySQL Connector/J is licensed under the terms of the GPLv2 <http://www.gnu.org/licenses/old-licenses/gpl-2.0.html>, like most MySQL Connectors. There are special exceptions to the terms and conditions of the GPLv2 as it is applied to this software, see the FLOSS License Exception <http://www.mysql.com/about/legal/licensing/foss-exception.html>. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ package com.mysql.jdbc; import java.sql.SQLException; /** * This interface is intended to be used by implementors of statement * interceptors so that implementors can create static or dynamic (via * java.lang.reflect.Proxy) proxy instances of ResultSets. It consists * of methods outside of java.sql.Result that are used internally by * other classes in the driver. * * This interface, although public is <strong>not</strong> designed to * be consumed publicly other than for the statement interceptor use case. * * @version $Id: $ */ public interface ResultSetInternalMethods extends java.sql.ResultSet { /** * Returns a new instance of this result set, that shares the * underlying row data. */ public abstract ResultSetInternalMethods copy() throws SQLException; /** * Does the result set contain rows, or is it the result of a DDL or DML * statement? */ public abstract boolean reallyResult(); /** * Functions like ResultSet.getObject(), but using the given SQL type * (as registered during CallableStatement.registerOutParameter()). */ public abstract Object getObjectStoredProc(int columnIndex, int desiredSqlType) throws SQLException; /** * Functions like ResultSet.getObject(), but using the given SQL type * (as registered during CallableStatement.registerOutParameter()). */ public abstract Object getObjectStoredProc(int i, java.util.Map<Object, Object> map, int desiredSqlType) throws SQLException; /** * Functions like ResultSet.getObject(), but using the given SQL type * (as registered during CallableStatement.registerOutParameter()). */ public abstract Object getObjectStoredProc(String columnName, int desiredSqlType) throws SQLException; /** * Functions like ResultSet.getObject(), but using the given SQL type * (as registered during CallableStatement.registerOutParameter()). */ public abstract Object getObjectStoredProc(String colName, java.util.Map<Object, Object> map, int desiredSqlType) throws SQLException; /** * Returns the server informational message returned from a DDL or DML * statement (if any), or null if none. */ public String getServerInfo(); /** * Returns the update count for this result set (if one exists), otherwise * -1. * * @ return the update count for this result set (if one exists), otherwise * -1. */ public long getUpdateCount(); /** * Returns the AUTO_INCREMENT value for the DDL/DML statement which created * this result set. * * @return the AUTO_INCREMENT value for the DDL/DML statement which created * this result set. */ public long getUpdateID(); /** * Closes this ResultSet and releases resources. * * @param calledExplicitly was realClose called by the standard * ResultSet.close() method, or was it closed internally by the driver? */ public void realClose(boolean calledExplicitly) throws SQLException; /** * Sets the first character of the query that was issued to create * this result set. The character should be upper-cased. */ public void setFirstCharOfQuery(char firstCharUpperCase); /** * Sets the statement that "owns" this result set (usually used when the * result set should internally "belong" to one statement, but is created * by another. */ public void setOwningStatement(com.mysql.jdbc.StatementImpl owningStatement); /** * Returns the first character of the query that was issued to create this * result set, upper-cased. */ public char getFirstCharOfQuery(); /** * Clears the reference to the next result set in a multi-result set * "chain". */ public void clearNextResult(); /** * Returns the next ResultSet in a multi-resultset "chain", if any, * null if none exists. */ public ResultSetInternalMethods getNextResultSet(); public void setStatementUsedForFetchingRows(PreparedStatement stmt); /** * @param wrapperStatement * The wrapperStatement to set. */ public void setWrapperStatement(java.sql.Statement wrapperStatement); /** * Builds a hash between column names and their indices for fast retrieval. * This is done lazily to support findColumn() and get*(String), as it * can be more expensive than just retrieving result set values by ordinal * index. */ public void buildIndexMapping() throws SQLException; public void initializeWithMetadata() throws SQLException; /** * Used by DatabaseMetadata implementations to coerce the metadata returned * by metadata queries into that required by the JDBC specification. * * @param metadataFields the coerced metadata to be applied to result sets * returned by "SHOW ..." or SELECTs on INFORMATION_SCHEMA performed on behalf * of methods in DatabaseMetadata. */ public void redefineFieldsForDBMD(Field[] metadataFields); public void populateCachedMetaData(CachedResultSetMetaData cachedMetaData) throws SQLException; public void initializeFromCachedMetaData(CachedResultSetMetaData cachedMetaData); public int getBytesSize() throws SQLException; }