2
Copyright (C) 2002-2007 MySQL AB
4
This program is free software; you can redistribute it and/or modify
5
it under the terms of version 2 of the GNU General Public License as
6
published by the Free Software Foundation.
8
There are special exceptions to the terms and conditions of the GPL
9
as it is applied to this software. View the full text of the
10
exception in file EXCEPTIONS-CONNECTOR-J in the directory of this
11
software distribution.
13
This program is distributed in the hope that it will be useful,
14
but WITHOUT ANY WARRANTY; without even the implied warranty of
15
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16
GNU General Public License for more details.
18
You should have received a copy of the GNU General Public License
19
along with this program; if not, write to the Free Software
20
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
24
package com.mysql.jdbc;
26
import java.sql.ResultSet;
27
import java.sql.RowIdLifetime;
28
import java.sql.SQLException;
29
import java.sql.Types;
30
import java.util.ArrayList;
32
import java.util.List;
34
public class JDBC4DatabaseMetaDataUsingInfoSchema extends DatabaseMetaDataUsingInfoSchema {
35
public JDBC4DatabaseMetaDataUsingInfoSchema(ConnectionImpl connToSet, String databaseToSet) throws SQLException {
36
super(connToSet, databaseToSet);
39
public RowIdLifetime getRowIdLifetime() throws SQLException {
40
return RowIdLifetime.ROWID_UNSUPPORTED;
44
* Returns true if this either implements the interface argument or is directly or indirectly a wrapper
45
* for an object that does. Returns false otherwise. If this implements the interface then return true,
46
* else if this is a wrapper then return the result of recursively calling <code>isWrapperFor</code> on the wrapped
47
* object. If this does not implement the interface and is not a wrapper, return false.
48
* This method should be implemented as a low-cost operation compared to <code>unwrap</code> so that
49
* callers can use this method to avoid expensive <code>unwrap</code> calls that may fail. If this method
50
* returns true then calling <code>unwrap</code> with the same argument should succeed.
52
* @param interfaces a Class defining an interface.
53
* @return true if this implements the interface or directly or indirectly wraps an object that does.
54
* @throws java.sql.SQLException if an error occurs while determining whether this is a wrapper
55
* for an object with the given interface.
58
public boolean isWrapperFor(Class<?> iface) throws SQLException {
59
// This works for classes that aren't actually wrapping
61
return iface.isInstance(this);
65
* Returns an object that implements the given interface to allow access to non-standard methods,
66
* or standard methods not exposed by the proxy.
67
* The result may be either the object found to implement the interface or a proxy for that object.
68
* If the receiver implements the interface then that is the object. If the receiver is a wrapper
69
* and the wrapped object implements the interface then that is the object. Otherwise the object is
70
* the result of calling <code>unwrap</code> recursively on the wrapped object. If the receiver is not a
71
* wrapper and does not implement the interface, then an <code>SQLException</code> is thrown.
73
* @param iface A Class defining an interface that the result must implement.
74
* @return an object that implements the interface. May be a proxy for the actual implementing object.
75
* @throws java.sql.SQLException If no object found that implements the interface
78
public <T> T unwrap(java.lang.Class<T> iface) throws java.sql.SQLException {
80
// This works for classes that aren't actually wrapping
82
return iface.cast(this);
83
} catch (ClassCastException cce) {
84
throw SQLError.createSQLException("Unable to unwrap to " + iface.toString(),
85
SQLError.SQL_STATE_ILLEGAL_ARGUMENT);
89
protected int getJDBC4FunctionNoTableConstant() {
90
return functionNoTable;