151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski/* 22c87ad3a45cecf9e344487cad1abfdebe79f2c7cNarayan Kamath * Copyright (C) 2014 The Android Open Source Project 351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Copyright (c) 1996, 2010, Oracle and/or its affiliates. All rights reserved. 451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * This code is free software; you can redistribute it and/or modify it 751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * under the terms of the GNU General Public License version 2 only, as 851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * published by the Free Software Foundation. Oracle designates this 951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * particular file as subject to the "Classpath" exception as provided 1051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * by Oracle in the LICENSE file that accompanied this code. 1151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 1251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * This code is distributed in the hope that it will be useful, but WITHOUT 1351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 1451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 1551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * version 2 for more details (a copy is included in the LICENSE file that 1651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * accompanied this code). 1751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 1851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * You should have received a copy of the GNU General Public License version 1951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 2 along with this work; if not, write to the Free Software Foundation, 2051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 2151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 2251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 2351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * or visit www.oracle.com if you need additional information or have any 2451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * questions. 2551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 2651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 2751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 2851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebskipackage java.sql; 2951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 3051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski/** 3151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Comprehensive information about the database as a whole. 3251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <P> 3351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * This interface is implemented by driver vendors to let users know the capabilities 3451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * of a Database Management System (DBMS) in combination with 3551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * the driver based on JDBC<sup><font size=-2>TM</font></sup> technology 3651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * ("JDBC driver") that is used with it. Different relational DBMSs often support 3751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * different features, implement features in different ways, and use different 3851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * data types. In addition, a driver may implement a feature on top of what the 3951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * DBMS offers. Information returned by methods in this interface applies 4051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * to the capabilities of a particular driver and a particular DBMS working 4151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * together. Note that as used in this documentation, the term "database" is 4251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * used generically to refer to both the driver and DBMS. 4351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <P> 4451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * A user for this interface is commonly a tool that needs to discover how to 4551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * deal with the underlying DBMS. This is especially true for applications 4651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * that are intended to be used with more than one DBMS. For example, a tool might use the method 4751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>getTypeInfo</code> to find out what data types can be used in a 4851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>CREATE TABLE</code> statement. Or a user might call the method 4951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>supportsCorrelatedSubqueries</code> to see if it is possible to use 5051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * a correlated subquery or <code>supportsBatchUpdates</code> to see if it is 5151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * possible to use batch updates. 5251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <P> 5351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Some <code>DatabaseMetaData</code> methods return lists of information 5451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * in the form of <code>ResultSet</code> objects. 5551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Regular <code>ResultSet</code> methods, such as 5651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>getString</code> and <code>getInt</code>, can be used 5751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * to retrieve the data from these <code>ResultSet</code> objects. If 5851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * a given form of metadata is not available, an empty <code>ResultSet</code> 5951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * will be returned. Additional columns beyond the columns defined to be 6051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * returned by the <code>ResultSet</code> object for a given method 6151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * can be defined by the JDBC driver vendor and must be accessed 6251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * by their <B>column label</B>. 6351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <P> 6451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Some <code>DatabaseMetaData</code> methods take arguments that are 6551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * String patterns. These arguments all have names such as fooPattern. 6651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Within a pattern String, "%" means match any substring of 0 or more 6751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * characters, and "_" means match any one character. Only metadata 6851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * entries matching the search pattern are returned. If a search pattern 6951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * argument is set to <code>null</code>, that argument's criterion will 7051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * be dropped from the search. 7151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <P> 7251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 7351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebskipublic interface DatabaseMetaData extends Wrapper { 7451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 7551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski //---------------------------------------------------------------------- 7651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski // First, a variety of minor information about the target database. 7751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 7851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 7951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves whether the current user can call all the procedures 8051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * returned by the method <code>getProcedures</code>. 8151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 8251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return <code>true</code> if so; <code>false</code> otherwise 8351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 8451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 8551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski boolean allProceduresAreCallable() throws SQLException; 8651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 8751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 8851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves whether the current user can use all the tables returned 8951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * by the method <code>getTables</code> in a <code>SELECT</code> 9051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * statement. 9151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 9251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return <code>true</code> if so; <code>false</code> otherwise 9351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 9451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 9551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski boolean allTablesAreSelectable() throws SQLException; 9651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 9751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 9851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves the URL for this DBMS. 9951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 10051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return the URL for this DBMS or <code>null</code> if it cannot be 10151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * generated 10251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 10351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 10451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski String getURL() throws SQLException; 10551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 10651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 10751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves the user name as known to this database. 10851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 10951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return the database user name 11051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 11151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 11251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski String getUserName() throws SQLException; 11351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 11451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 11551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves whether this database is in read-only mode. 11651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 11751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return <code>true</code> if so; <code>false</code> otherwise 11851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 11951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 12051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski boolean isReadOnly() throws SQLException; 12151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 12251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 12351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves whether <code>NULL</code> values are sorted high. 12451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Sorted high means that <code>NULL</code> values 12551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * sort higher than any other value in a domain. In an ascending order, 12651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * if this method returns <code>true</code>, <code>NULL</code> values 12751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * will appear at the end. By contrast, the method 12851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>nullsAreSortedAtEnd</code> indicates whether <code>NULL</code> values 12951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * are sorted at the end regardless of sort order. 13051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 13151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return <code>true</code> if so; <code>false</code> otherwise 13251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 13351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 13451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski boolean nullsAreSortedHigh() throws SQLException; 13551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 13651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 13751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves whether <code>NULL</code> values are sorted low. 13851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Sorted low means that <code>NULL</code> values 13951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * sort lower than any other value in a domain. In an ascending order, 14051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * if this method returns <code>true</code>, <code>NULL</code> values 14151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * will appear at the beginning. By contrast, the method 14251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>nullsAreSortedAtStart</code> indicates whether <code>NULL</code> values 14351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * are sorted at the beginning regardless of sort order. 14451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 14551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return <code>true</code> if so; <code>false</code> otherwise 14651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 14751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 14851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski boolean nullsAreSortedLow() throws SQLException; 14951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 15051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 15151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves whether <code>NULL</code> values are sorted at the start regardless 15251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * of sort order. 15351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 15451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return <code>true</code> if so; <code>false</code> otherwise 15551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 15651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 15751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski boolean nullsAreSortedAtStart() throws SQLException; 15851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 15951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 16051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves whether <code>NULL</code> values are sorted at the end regardless of 16151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * sort order. 16251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 16351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return <code>true</code> if so; <code>false</code> otherwise 16451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 16551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 16651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski boolean nullsAreSortedAtEnd() throws SQLException; 16751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 16851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 16951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves the name of this database product. 17051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 17151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return database product name 17251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 17351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 17451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski String getDatabaseProductName() throws SQLException; 17551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 17651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 17751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves the version number of this database product. 17851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 17951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return database version number 18051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 18151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 18251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski String getDatabaseProductVersion() throws SQLException; 18351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 18451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 18551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves the name of this JDBC driver. 18651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 18751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return JDBC driver name 18851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 18951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 19051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski String getDriverName() throws SQLException; 19151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 19251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 19351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves the version number of this JDBC driver as a <code>String</code>. 19451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 19551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return JDBC driver version 19651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 19751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 19851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski String getDriverVersion() throws SQLException; 19951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 20051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 20151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves this JDBC driver's major version number. 20251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 20351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return JDBC driver major version 20451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 20551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski int getDriverMajorVersion(); 20651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 20751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 20851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves this JDBC driver's minor version number. 20951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 21051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return JDBC driver minor version number 21151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 21251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski int getDriverMinorVersion(); 21351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 21451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 21551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves whether this database stores tables in a local file. 21651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 21751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return <code>true</code> if so; <code>false</code> otherwise 21851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 21951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 22051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski boolean usesLocalFiles() throws SQLException; 22151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 22251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 22351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves whether this database uses a file for each table. 22451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 22551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return <code>true</code> if this database uses a local file for each table; 22651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>false</code> otherwise 22751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 22851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 22951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski boolean usesLocalFilePerTable() throws SQLException; 23051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 23151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 23251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves whether this database treats mixed case unquoted SQL identifiers as 23351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * case sensitive and as a result stores them in mixed case. 23451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 23551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return <code>true</code> if so; <code>false</code> otherwise 23651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 23751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 23851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski boolean supportsMixedCaseIdentifiers() throws SQLException; 23951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 24051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 24151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves whether this database treats mixed case unquoted SQL identifiers as 24251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * case insensitive and stores them in upper case. 24351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 24451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return <code>true</code> if so; <code>false</code> otherwise 24551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 24651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 24751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski boolean storesUpperCaseIdentifiers() throws SQLException; 24851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 24951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 25051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves whether this database treats mixed case unquoted SQL identifiers as 25151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * case insensitive and stores them in lower case. 25251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 25351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return <code>true</code> if so; <code>false</code> otherwise 25451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 25551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 25651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski boolean storesLowerCaseIdentifiers() throws SQLException; 25751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 25851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 25951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves whether this database treats mixed case unquoted SQL identifiers as 26051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * case insensitive and stores them in mixed case. 26151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 26251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return <code>true</code> if so; <code>false</code> otherwise 26351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 26451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 26551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski boolean storesMixedCaseIdentifiers() throws SQLException; 26651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 26751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 26851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves whether this database treats mixed case quoted SQL identifiers as 26951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * case sensitive and as a result stores them in mixed case. 27051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 27151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return <code>true</code> if so; <code>false</code> otherwise 27251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 27351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 27451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski boolean supportsMixedCaseQuotedIdentifiers() throws SQLException; 27551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 27651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 27751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves whether this database treats mixed case quoted SQL identifiers as 27851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * case insensitive and stores them in upper case. 27951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 28051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return <code>true</code> if so; <code>false</code> otherwise 28151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 28251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 28351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski boolean storesUpperCaseQuotedIdentifiers() throws SQLException; 28451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 28551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 28651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves whether this database treats mixed case quoted SQL identifiers as 28751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * case insensitive and stores them in lower case. 28851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 28951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return <code>true</code> if so; <code>false</code> otherwise 29051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 29151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 29251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski boolean storesLowerCaseQuotedIdentifiers() throws SQLException; 29351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 29451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 29551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves whether this database treats mixed case quoted SQL identifiers as 29651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * case insensitive and stores them in mixed case. 29751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 29851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return <code>true</code> if so; <code>false</code> otherwise 29951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 30051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 30151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski boolean storesMixedCaseQuotedIdentifiers() throws SQLException; 30251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 30351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 30451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves the string used to quote SQL identifiers. 30551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * This method returns a space " " if identifier quoting is not supported. 30651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 30751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return the quoting string or a space if quoting is not supported 30851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 30951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 31051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski String getIdentifierQuoteString() throws SQLException; 31151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 31251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 31351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves a comma-separated list of all of this database's SQL keywords 31451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * that are NOT also SQL:2003 keywords. 31551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 31651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return the list of this database's keywords that are not also 31751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * SQL:2003 keywords 31851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 31951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 32051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski String getSQLKeywords() throws SQLException; 32151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 32251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 32351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves a comma-separated list of math functions available with 32451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * this database. These are the Open /Open CLI math function names used in 32551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * the JDBC function escape clause. 32651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 32751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return the list of math functions supported by this database 32851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 32951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 33051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski String getNumericFunctions() throws SQLException; 33151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 33251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 33351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves a comma-separated list of string functions available with 33451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * this database. These are the Open Group CLI string function names used 33551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * in the JDBC function escape clause. 33651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 33751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return the list of string functions supported by this database 33851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 33951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 34051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski String getStringFunctions() throws SQLException; 34151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 34251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 34351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves a comma-separated list of system functions available with 34451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * this database. These are the Open Group CLI system function names used 34551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * in the JDBC function escape clause. 34651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 34751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return a list of system functions supported by this database 34851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 34951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 35051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski String getSystemFunctions() throws SQLException; 35151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 35251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 35351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves a comma-separated list of the time and date functions available 35451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * with this database. 35551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 35651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return the list of time and date functions supported by this database 35751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 35851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 35951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski String getTimeDateFunctions() throws SQLException; 36051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 36151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 36251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves the string that can be used to escape wildcard characters. 36351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * This is the string that can be used to escape '_' or '%' in 36451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * the catalog search parameters that are a pattern (and therefore use one 36551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * of the wildcard characters). 36651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 36751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <P>The '_' character represents any single character; 36851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * the '%' character represents any sequence of zero or 36951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * more characters. 37051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 37151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return the string used to escape wildcard characters 37251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 37351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 37451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski String getSearchStringEscape() throws SQLException; 37551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 37651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 37751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves all the "extra" characters that can be used in unquoted 37851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * identifier names (those beyond a-z, A-Z, 0-9 and _). 37951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 38051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return the string containing the extra characters 38151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 38251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 38351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski String getExtraNameCharacters() throws SQLException; 38451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 38551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski //-------------------------------------------------------------------- 38651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski // Functions describing which features are supported. 38751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 38851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 38951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves whether this database supports <code>ALTER TABLE</code> 39051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * with add column. 39151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 39251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return <code>true</code> if so; <code>false</code> otherwise 39351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 39451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 39551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski boolean supportsAlterTableWithAddColumn() throws SQLException; 39651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 39751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 39851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves whether this database supports <code>ALTER TABLE</code> 39951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * with drop column. 40051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 40151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return <code>true</code> if so; <code>false</code> otherwise 40251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 40351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 40451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski boolean supportsAlterTableWithDropColumn() throws SQLException; 40551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 40651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 40751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves whether this database supports column aliasing. 40851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 40951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <P>If so, the SQL AS clause can be used to provide names for 41051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * computed columns or to provide alias names for columns as 41151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * required. 41251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 41351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return <code>true</code> if so; <code>false</code> otherwise 41451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 41551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 41651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski boolean supportsColumnAliasing() throws SQLException; 41751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 41851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 41951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves whether this database supports concatenations between 42051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>NULL</code> and non-<code>NULL</code> values being 42151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>NULL</code>. 42251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 42351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return <code>true</code> if so; <code>false</code> otherwise 42451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 42551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 42651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski boolean nullPlusNonNullIsNull() throws SQLException; 42751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 42851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 42951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves whether this database supports the JDBC scalar function 43051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>CONVERT</code> for the conversion of one JDBC type to another. 43151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * The JDBC types are the generic SQL data types defined 43251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * in <code>java.sql.Types</code>. 43351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 43451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return <code>true</code> if so; <code>false</code> otherwise 43551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 43651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 43751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski boolean supportsConvert() throws SQLException; 43851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 43951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 44051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves whether this database supports the JDBC scalar function 44151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>CONVERT</code> for conversions between the JDBC types <i>fromType</i> 44251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * and <i>toType</i>. The JDBC types are the generic SQL data types defined 44351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * in <code>java.sql.Types</code>. 44451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 44551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @param fromType the type to convert from; one of the type codes from 44651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * the class <code>java.sql.Types</code> 44751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @param toType the type to convert to; one of the type codes from 44851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * the class <code>java.sql.Types</code> 44951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return <code>true</code> if so; <code>false</code> otherwise 45051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 45151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @see Types 45251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 45351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski boolean supportsConvert(int fromType, int toType) throws SQLException; 45451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 45551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 45651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves whether this database supports table correlation names. 45751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 45851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return <code>true</code> if so; <code>false</code> otherwise 45951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 46051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 46151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski boolean supportsTableCorrelationNames() throws SQLException; 46251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 46351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 46451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves whether, when table correlation names are supported, they 46551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * are restricted to being different from the names of the tables. 46651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 46751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return <code>true</code> if so; <code>false</code> otherwise 46851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 46951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 47051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski boolean supportsDifferentTableCorrelationNames() throws SQLException; 47151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 47251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 47351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves whether this database supports expressions in 47451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>ORDER BY</code> lists. 47551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 47651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return <code>true</code> if so; <code>false</code> otherwise 47751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 47851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 47951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski boolean supportsExpressionsInOrderBy() throws SQLException; 48051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 48151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 48251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves whether this database supports using a column that is 48351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * not in the <code>SELECT</code> statement in an 48451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>ORDER BY</code> clause. 48551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 48651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return <code>true</code> if so; <code>false</code> otherwise 48751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 48851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 48951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski boolean supportsOrderByUnrelated() throws SQLException; 49051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 49151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 49251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves whether this database supports some form of 49351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>GROUP BY</code> clause. 49451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 49551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return <code>true</code> if so; <code>false</code> otherwise 49651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 49751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 49851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski boolean supportsGroupBy() throws SQLException; 49951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 50051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 50151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves whether this database supports using a column that is 50251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * not in the <code>SELECT</code> statement in a 50351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>GROUP BY</code> clause. 50451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 50551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return <code>true</code> if so; <code>false</code> otherwise 50651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 50751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 50851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski boolean supportsGroupByUnrelated() throws SQLException; 50951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 51051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 51151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves whether this database supports using columns not included in 51251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * the <code>SELECT</code> statement in a <code>GROUP BY</code> clause 51351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * provided that all of the columns in the <code>SELECT</code> statement 51451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * are included in the <code>GROUP BY</code> clause. 51551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 51651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return <code>true</code> if so; <code>false</code> otherwise 51751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 51851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 51951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski boolean supportsGroupByBeyondSelect() throws SQLException; 52051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 52151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 52251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves whether this database supports specifying a 52351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>LIKE</code> escape clause. 52451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 52551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return <code>true</code> if so; <code>false</code> otherwise 52651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 52751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 52851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski boolean supportsLikeEscapeClause() throws SQLException; 52951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 53051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 53151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves whether this database supports getting multiple 53251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>ResultSet</code> objects from a single call to the 53351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * method <code>execute</code>. 53451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 53551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return <code>true</code> if so; <code>false</code> otherwise 53651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 53751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 53851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski boolean supportsMultipleResultSets() throws SQLException; 53951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 54051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 54151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves whether this database allows having multiple 54251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * transactions open at once (on different connections). 54351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 54451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return <code>true</code> if so; <code>false</code> otherwise 54551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 54651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 54751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski boolean supportsMultipleTransactions() throws SQLException; 54851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 54951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 55051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves whether columns in this database may be defined as non-nullable. 55151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 55251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return <code>true</code> if so; <code>false</code> otherwise 55351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 55451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 55551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski boolean supportsNonNullableColumns() throws SQLException; 55651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 55751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 55851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves whether this database supports the ODBC Minimum SQL grammar. 55951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 56051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return <code>true</code> if so; <code>false</code> otherwise 56151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 56251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 56351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski boolean supportsMinimumSQLGrammar() throws SQLException; 56451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 56551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 56651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves whether this database supports the ODBC Core SQL grammar. 56751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 56851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return <code>true</code> if so; <code>false</code> otherwise 56951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 57051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 57151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski boolean supportsCoreSQLGrammar() throws SQLException; 57251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 57351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 57451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves whether this database supports the ODBC Extended SQL grammar. 57551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 57651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return <code>true</code> if so; <code>false</code> otherwise 57751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 57851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 57951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski boolean supportsExtendedSQLGrammar() throws SQLException; 58051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 58151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 58251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves whether this database supports the ANSI92 entry level SQL 58351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * grammar. 58451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 58551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return <code>true</code> if so; <code>false</code> otherwise 58651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 58751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 58851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski boolean supportsANSI92EntryLevelSQL() throws SQLException; 58951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 59051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 59151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves whether this database supports the ANSI92 intermediate SQL grammar supported. 59251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 59351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return <code>true</code> if so; <code>false</code> otherwise 59451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 59551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 59651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski boolean supportsANSI92IntermediateSQL() throws SQLException; 59751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 59851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 59951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves whether this database supports the ANSI92 full SQL grammar supported. 60051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 60151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return <code>true</code> if so; <code>false</code> otherwise 60251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 60351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 60451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski boolean supportsANSI92FullSQL() throws SQLException; 60551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 60651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 60751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves whether this database supports the SQL Integrity 60851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Enhancement Facility. 60951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 61051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return <code>true</code> if so; <code>false</code> otherwise 61151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 61251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 61351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski boolean supportsIntegrityEnhancementFacility() throws SQLException; 61451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 61551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 61651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves whether this database supports some form of outer join. 61751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 61851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return <code>true</code> if so; <code>false</code> otherwise 61951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 62051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 62151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski boolean supportsOuterJoins() throws SQLException; 62251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 62351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 62451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves whether this database supports full nested outer joins. 62551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 62651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return <code>true</code> if so; <code>false</code> otherwise 62751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 62851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 62951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski boolean supportsFullOuterJoins() throws SQLException; 63051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 63151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 63251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves whether this database provides limited support for outer 63351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * joins. (This will be <code>true</code> if the method 63451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>supportsFullOuterJoins</code> returns <code>true</code>). 63551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 63651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return <code>true</code> if so; <code>false</code> otherwise 63751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 63851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 63951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski boolean supportsLimitedOuterJoins() throws SQLException; 64051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 64151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 64251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves the database vendor's preferred term for "schema". 64351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 64451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return the vendor term for "schema" 64551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 64651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 64751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski String getSchemaTerm() throws SQLException; 64851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 64951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 65051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves the database vendor's preferred term for "procedure". 65151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 65251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return the vendor term for "procedure" 65351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 65451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 65551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski String getProcedureTerm() throws SQLException; 65651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 65751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 65851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves the database vendor's preferred term for "catalog". 65951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 66051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return the vendor term for "catalog" 66151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 66251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 66351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski String getCatalogTerm() throws SQLException; 66451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 66551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 66651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves whether a catalog appears at the start of a fully qualified 66751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * table name. If not, the catalog appears at the end. 66851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 66951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return <code>true</code> if the catalog name appears at the beginning 67051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * of a fully qualified table name; <code>false</code> otherwise 67151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 67251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 67351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski boolean isCatalogAtStart() throws SQLException; 67451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 67551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 67651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves the <code>String</code> that this database uses as the 67751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * separator between a catalog and table name. 67851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 67951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return the separator string 68051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 68151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 68251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski String getCatalogSeparator() throws SQLException; 68351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 68451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 68551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves whether a schema name can be used in a data manipulation statement. 68651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 68751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return <code>true</code> if so; <code>false</code> otherwise 68851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 68951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 69051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski boolean supportsSchemasInDataManipulation() throws SQLException; 69151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 69251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 69351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves whether a schema name can be used in a procedure call statement. 69451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 69551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return <code>true</code> if so; <code>false</code> otherwise 69651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 69751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 69851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski boolean supportsSchemasInProcedureCalls() throws SQLException; 69951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 70051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 70151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves whether a schema name can be used in a table definition statement. 70251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 70351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return <code>true</code> if so; <code>false</code> otherwise 70451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 70551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 70651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski boolean supportsSchemasInTableDefinitions() throws SQLException; 70751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 70851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 70951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves whether a schema name can be used in an index definition statement. 71051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 71151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return <code>true</code> if so; <code>false</code> otherwise 71251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 71351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 71451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski boolean supportsSchemasInIndexDefinitions() throws SQLException; 71551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 71651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 71751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves whether a schema name can be used in a privilege definition statement. 71851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 71951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return <code>true</code> if so; <code>false</code> otherwise 72051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 72151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 72251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski boolean supportsSchemasInPrivilegeDefinitions() throws SQLException; 72351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 72451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 72551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves whether a catalog name can be used in a data manipulation statement. 72651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 72751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return <code>true</code> if so; <code>false</code> otherwise 72851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 72951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 73051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski boolean supportsCatalogsInDataManipulation() throws SQLException; 73151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 73251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 73351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves whether a catalog name can be used in a procedure call statement. 73451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 73551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return <code>true</code> if so; <code>false</code> otherwise 73651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 73751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 73851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski boolean supportsCatalogsInProcedureCalls() throws SQLException; 73951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 74051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 74151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves whether a catalog name can be used in a table definition statement. 74251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 74351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return <code>true</code> if so; <code>false</code> otherwise 74451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 74551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 74651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski boolean supportsCatalogsInTableDefinitions() throws SQLException; 74751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 74851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 74951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves whether a catalog name can be used in an index definition statement. 75051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 75151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return <code>true</code> if so; <code>false</code> otherwise 75251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 75351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 75451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski boolean supportsCatalogsInIndexDefinitions() throws SQLException; 75551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 75651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 75751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves whether a catalog name can be used in a privilege definition statement. 75851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 75951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return <code>true</code> if so; <code>false</code> otherwise 76051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 76151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 76251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski boolean supportsCatalogsInPrivilegeDefinitions() throws SQLException; 76351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 76451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 76551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 76651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves whether this database supports positioned <code>DELETE</code> 76751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * statements. 76851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 76951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return <code>true</code> if so; <code>false</code> otherwise 77051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 77151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 77251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski boolean supportsPositionedDelete() throws SQLException; 77351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 77451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 77551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves whether this database supports positioned <code>UPDATE</code> 77651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * statements. 77751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 77851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return <code>true</code> if so; <code>false</code> otherwise 77951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 78051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 78151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski boolean supportsPositionedUpdate() throws SQLException; 78251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 78351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 78451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves whether this database supports <code>SELECT FOR UPDATE</code> 78551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * statements. 78651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 78751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return <code>true</code> if so; <code>false</code> otherwise 78851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 78951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 79051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski boolean supportsSelectForUpdate() throws SQLException; 79151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 79251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 79351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves whether this database supports stored procedure calls 79451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * that use the stored procedure escape syntax. 79551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 79651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return <code>true</code> if so; <code>false</code> otherwise 79751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 79851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 79951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski boolean supportsStoredProcedures() throws SQLException; 80051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 80151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 80251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves whether this database supports subqueries in comparison 80351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * expressions. 80451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 80551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return <code>true</code> if so; <code>false</code> otherwise 80651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 80751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 80851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski boolean supportsSubqueriesInComparisons() throws SQLException; 80951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 81051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 81151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves whether this database supports subqueries in 81251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>EXISTS</code> expressions. 81351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 81451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return <code>true</code> if so; <code>false</code> otherwise 81551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 81651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 81751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski boolean supportsSubqueriesInExists() throws SQLException; 81851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 81951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 82051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves whether this database supports subqueries in 82151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>IN</code> expressions. 82251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 82351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return <code>true</code> if so; <code>false</code> otherwise 82451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 82551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 82651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski boolean supportsSubqueriesInIns() throws SQLException; 82751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 82851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 82951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves whether this database supports subqueries in quantified 83051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * expressions. 83151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 83251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return <code>true</code> if so; <code>false</code> otherwise 83351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 83451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 83551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski boolean supportsSubqueriesInQuantifieds() throws SQLException; 83651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 83751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 83851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves whether this database supports correlated subqueries. 83951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 84051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return <code>true</code> if so; <code>false</code> otherwise 84151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 84251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 84351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski boolean supportsCorrelatedSubqueries() throws SQLException; 84451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 84551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 84651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves whether this database supports SQL <code>UNION</code>. 84751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 84851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return <code>true</code> if so; <code>false</code> otherwise 84951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 85051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 85151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski boolean supportsUnion() throws SQLException; 85251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 85351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 85451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves whether this database supports SQL <code>UNION ALL</code>. 85551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 85651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return <code>true</code> if so; <code>false</code> otherwise 85751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 85851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 85951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski boolean supportsUnionAll() throws SQLException; 86051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 86151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 86251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves whether this database supports keeping cursors open 86351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * across commits. 86451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 86551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return <code>true</code> if cursors always remain open; 86651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>false</code> if they might not remain open 86751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 86851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 86951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski boolean supportsOpenCursorsAcrossCommit() throws SQLException; 87051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 87151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 87251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves whether this database supports keeping cursors open 87351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * across rollbacks. 87451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 87551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return <code>true</code> if cursors always remain open; 87651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>false</code> if they might not remain open 87751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 87851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 87951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski boolean supportsOpenCursorsAcrossRollback() throws SQLException; 88051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 88151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 88251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves whether this database supports keeping statements open 88351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * across commits. 88451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 88551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return <code>true</code> if statements always remain open; 88651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>false</code> if they might not remain open 88751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 88851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 88951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski boolean supportsOpenStatementsAcrossCommit() throws SQLException; 89051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 89151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 89251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves whether this database supports keeping statements open 89351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * across rollbacks. 89451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 89551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return <code>true</code> if statements always remain open; 89651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>false</code> if they might not remain open 89751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 89851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 89951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski boolean supportsOpenStatementsAcrossRollback() throws SQLException; 90051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 90151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 90251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 90351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski //---------------------------------------------------------------------- 90451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski // The following group of methods exposes various limitations 90551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski // based on the target database with the current driver. 90651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski // Unless otherwise specified, a result of zero means there is no 90751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski // limit, or the limit is not known. 90851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 90951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 91051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves the maximum number of hex characters this database allows in an 91151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * inline binary literal. 91251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 91351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return max the maximum length (in hex characters) for a binary literal; 91451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * a result of zero means that there is no limit or the limit 91551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * is not known 91651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 91751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 91851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski int getMaxBinaryLiteralLength() throws SQLException; 91951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 92051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 92151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves the maximum number of characters this database allows 92251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * for a character literal. 92351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 92451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return the maximum number of characters allowed for a character literal; 92551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * a result of zero means that there is no limit or the limit is 92651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * not known 92751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 92851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 92951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski int getMaxCharLiteralLength() throws SQLException; 93051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 93151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 93251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves the maximum number of characters this database allows 93351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * for a column name. 93451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 93551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return the maximum number of characters allowed for a column name; 93651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * a result of zero means that there is no limit or the limit 93751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * is not known 93851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 93951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 94051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski int getMaxColumnNameLength() throws SQLException; 94151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 94251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 94351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves the maximum number of columns this database allows in a 94451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>GROUP BY</code> clause. 94551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 94651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return the maximum number of columns allowed; 94751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * a result of zero means that there is no limit or the limit 94851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * is not known 94951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 95051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 95151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski int getMaxColumnsInGroupBy() throws SQLException; 95251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 95351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 95451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves the maximum number of columns this database allows in an index. 95551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 95651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return the maximum number of columns allowed; 95751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * a result of zero means that there is no limit or the limit 95851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * is not known 95951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 96051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 96151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski int getMaxColumnsInIndex() throws SQLException; 96251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 96351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 96451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves the maximum number of columns this database allows in an 96551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>ORDER BY</code> clause. 96651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 96751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return the maximum number of columns allowed; 96851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * a result of zero means that there is no limit or the limit 96951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * is not known 97051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 97151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 97251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski int getMaxColumnsInOrderBy() throws SQLException; 97351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 97451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 97551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves the maximum number of columns this database allows in a 97651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>SELECT</code> list. 97751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 97851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return the maximum number of columns allowed; 97951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * a result of zero means that there is no limit or the limit 98051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * is not known 98151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 98251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 98351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski int getMaxColumnsInSelect() throws SQLException; 98451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 98551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 98651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves the maximum number of columns this database allows in a table. 98751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 98851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return the maximum number of columns allowed; 98951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * a result of zero means that there is no limit or the limit 99051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * is not known 99151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 99251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 99351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski int getMaxColumnsInTable() throws SQLException; 99451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 99551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 99651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves the maximum number of concurrent connections to this 99751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * database that are possible. 99851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 99951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return the maximum number of active connections possible at one time; 100051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * a result of zero means that there is no limit or the limit 100151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * is not known 100251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 100351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 100451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski int getMaxConnections() throws SQLException; 100551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 100651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 100751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves the maximum number of characters that this database allows in a 100851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * cursor name. 100951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 101051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return the maximum number of characters allowed in a cursor name; 101151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * a result of zero means that there is no limit or the limit 101251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * is not known 101351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 101451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 101551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski int getMaxCursorNameLength() throws SQLException; 101651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 101751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 101851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves the maximum number of bytes this database allows for an 101951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * index, including all of the parts of the index. 102051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 102151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return the maximum number of bytes allowed; this limit includes the 102251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * composite of all the constituent parts of the index; 102351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * a result of zero means that there is no limit or the limit 102451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * is not known 102551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 102651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 102751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski int getMaxIndexLength() throws SQLException; 102851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 102951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 103051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves the maximum number of characters that this database allows in a 103151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * schema name. 103251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 103351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return the maximum number of characters allowed in a schema name; 103451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * a result of zero means that there is no limit or the limit 103551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * is not known 103651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 103751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 103851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski int getMaxSchemaNameLength() throws SQLException; 103951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 104051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 104151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves the maximum number of characters that this database allows in a 104251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * procedure name. 104351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 104451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return the maximum number of characters allowed in a procedure name; 104551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * a result of zero means that there is no limit or the limit 104651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * is not known 104751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 104851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 104951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski int getMaxProcedureNameLength() throws SQLException; 105051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 105151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 105251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves the maximum number of characters that this database allows in a 105351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * catalog name. 105451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 105551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return the maximum number of characters allowed in a catalog name; 105651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * a result of zero means that there is no limit or the limit 105751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * is not known 105851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 105951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 106051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski int getMaxCatalogNameLength() throws SQLException; 106151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 106251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 106351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves the maximum number of bytes this database allows in 106451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * a single row. 106551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 106651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return the maximum number of bytes allowed for a row; a result of 106751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * zero means that there is no limit or the limit is not known 106851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 106951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 107051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski int getMaxRowSize() throws SQLException; 107151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 107251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 107351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves whether the return value for the method 107451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>getMaxRowSize</code> includes the SQL data types 107551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>LONGVARCHAR</code> and <code>LONGVARBINARY</code>. 107651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 107751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return <code>true</code> if so; <code>false</code> otherwise 107851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 107951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 108051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski boolean doesMaxRowSizeIncludeBlobs() throws SQLException; 108151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 108251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 108351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves the maximum number of characters this database allows in 108451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * an SQL statement. 108551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 108651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return the maximum number of characters allowed for an SQL statement; 108751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * a result of zero means that there is no limit or the limit 108851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * is not known 108951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 109051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 109151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski int getMaxStatementLength() throws SQLException; 109251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 109351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 109451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves the maximum number of active statements to this database 109551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * that can be open at the same time. 109651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 109751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return the maximum number of statements that can be open at one time; 109851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * a result of zero means that there is no limit or the limit 109951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * is not known 110051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 110151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 110251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski int getMaxStatements() throws SQLException; 110351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 110451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 110551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves the maximum number of characters this database allows in 110651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * a table name. 110751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 110851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return the maximum number of characters allowed for a table name; 110951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * a result of zero means that there is no limit or the limit 111051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * is not known 111151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 111251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 111351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski int getMaxTableNameLength() throws SQLException; 111451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 111551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 111651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves the maximum number of tables this database allows in a 111751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>SELECT</code> statement. 111851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 111951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return the maximum number of tables allowed in a <code>SELECT</code> 112051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * statement; a result of zero means that there is no limit or 112151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * the limit is not known 112251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 112351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 112451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski int getMaxTablesInSelect() throws SQLException; 112551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 112651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 112751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves the maximum number of characters this database allows in 112851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * a user name. 112951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 113051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return the maximum number of characters allowed for a user name; 113151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * a result of zero means that there is no limit or the limit 113251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * is not known 113351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 113451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 113551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski int getMaxUserNameLength() throws SQLException; 113651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 113751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski //---------------------------------------------------------------------- 113851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 113951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 114051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves this database's default transaction isolation level. The 114151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * possible values are defined in <code>java.sql.Connection</code>. 114251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 114351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return the default isolation level 114451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 114551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @see Connection 114651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 114751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski int getDefaultTransactionIsolation() throws SQLException; 114851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 114951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 115051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves whether this database supports transactions. If not, invoking the 115151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * method <code>commit</code> is a noop, and the isolation level is 115251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>TRANSACTION_NONE</code>. 115351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 115451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return <code>true</code> if transactions are supported; 115551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>false</code> otherwise 115651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 115751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 115851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski boolean supportsTransactions() throws SQLException; 115951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 116051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 116151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves whether this database supports the given transaction isolation level. 116251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 116351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @param level one of the transaction isolation levels defined in 116451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>java.sql.Connection</code> 116551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return <code>true</code> if so; <code>false</code> otherwise 116651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 116751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @see Connection 116851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 116951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski boolean supportsTransactionIsolationLevel(int level) 117051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski throws SQLException; 117151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 117251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 117351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves whether this database supports both data definition and 117451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * data manipulation statements within a transaction. 117551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 117651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return <code>true</code> if so; <code>false</code> otherwise 117751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 117851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 117951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski boolean supportsDataDefinitionAndDataManipulationTransactions() 118051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski throws SQLException; 118151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 118251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves whether this database supports only data manipulation 118351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * statements within a transaction. 118451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 118551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return <code>true</code> if so; <code>false</code> otherwise 118651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 118751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 118851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski boolean supportsDataManipulationTransactionsOnly() 118951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski throws SQLException; 119051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 119151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 119251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves whether a data definition statement within a transaction forces 119351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * the transaction to commit. 119451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 119551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return <code>true</code> if so; <code>false</code> otherwise 119651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 119751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 119851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski boolean dataDefinitionCausesTransactionCommit() 119951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski throws SQLException; 120051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 120151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 120251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves whether this database ignores a data definition statement 120351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * within a transaction. 120451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 120551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return <code>true</code> if so; <code>false</code> otherwise 120651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 120751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 120851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski boolean dataDefinitionIgnoredInTransactions() 120951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski throws SQLException; 121051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 121151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 121251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves a description of the stored procedures available in the given 121351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * catalog. 121451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <P> 121551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Only procedure descriptions matching the schema and 121651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * procedure name criteria are returned. They are ordered by 121751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>PROCEDURE_CAT</code>, <code>PROCEDURE_SCHEM</code>, 121851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>PROCEDURE_NAME</code> and <code>SPECIFIC_ NAME</code>. 121951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 122051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <P>Each procedure description has the the following columns: 122151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <OL> 122251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>PROCEDURE_CAT</B> String => procedure catalog (may be <code>null</code>) 122351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>PROCEDURE_SCHEM</B> String => procedure schema (may be <code>null</code>) 122451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>PROCEDURE_NAME</B> String => procedure name 122551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI> reserved for future use 122651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI> reserved for future use 122751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI> reserved for future use 122851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>REMARKS</B> String => explanatory comment on the procedure 122951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>PROCEDURE_TYPE</B> short => kind of procedure: 123051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <UL> 123151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI> procedureResultUnknown - Cannot determine if a return value 123251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * will be returned 123351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI> procedureNoResult - Does not return a return value 123451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI> procedureReturnsResult - Returns a return value 123551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * </UL> 123651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>SPECIFIC_NAME</B> String => The name which uniquely identifies this 123751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * procedure within its schema. 123851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * </OL> 123951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <p> 124051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * A user may not have permissions to execute any of the procedures that are 124151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * returned by <code>getProcedures</code> 124251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 124351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @param catalog a catalog name; must match the catalog name as it 124451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * is stored in the database; "" retrieves those without a catalog; 124551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>null</code> means that the catalog name should not be used to narrow 124651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * the search 124751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @param schemaPattern a schema name pattern; must match the schema name 124851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * as it is stored in the database; "" retrieves those without a schema; 124951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>null</code> means that the schema name should not be used to narrow 125051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * the search 125151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @param procedureNamePattern a procedure name pattern; must match the 125251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * procedure name as it is stored in the database 125351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return <code>ResultSet</code> - each row is a procedure description 125451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 125551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @see #getSearchStringEscape 125651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 125751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski ResultSet getProcedures(String catalog, String schemaPattern, 125851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski String procedureNamePattern) throws SQLException; 125951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 126051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 126151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Indicates that it is not known whether the procedure returns 126251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * a result. 126351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <P> 126451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * A possible value for column <code>PROCEDURE_TYPE</code> in the 126551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>ResultSet</code> object returned by the method 126651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>getProcedures</code>. 126751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 126851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski int procedureResultUnknown = 0; 126951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 127051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 127151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Indicates that the procedure does not return a result. 127251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <P> 127351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * A possible value for column <code>PROCEDURE_TYPE</code> in the 127451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>ResultSet</code> object returned by the method 127551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>getProcedures</code>. 127651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 127751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski int procedureNoResult = 1; 127851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 127951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 128051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Indicates that the procedure returns a result. 128151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <P> 128251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * A possible value for column <code>PROCEDURE_TYPE</code> in the 128351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>ResultSet</code> object returned by the method 128451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>getProcedures</code>. 128551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 128651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski int procedureReturnsResult = 2; 128751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 128851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 128951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves a description of the given catalog's stored procedure parameter 129051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * and result columns. 129151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 129251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <P>Only descriptions matching the schema, procedure and 129351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * parameter name criteria are returned. They are ordered by 129451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * PROCEDURE_CAT, PROCEDURE_SCHEM, PROCEDURE_NAME and SPECIFIC_NAME. Within this, the return value, 129551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * if any, is first. Next are the parameter descriptions in call 129651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * order. The column descriptions follow in column number order. 129751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 129851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <P>Each row in the <code>ResultSet</code> is a parameter description or 129951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * column description with the following fields: 130051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <OL> 130151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>PROCEDURE_CAT</B> String => procedure catalog (may be <code>null</code>) 130251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>PROCEDURE_SCHEM</B> String => procedure schema (may be <code>null</code>) 130351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>PROCEDURE_NAME</B> String => procedure name 130451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>COLUMN_NAME</B> String => column/parameter name 130551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>COLUMN_TYPE</B> Short => kind of column/parameter: 130651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <UL> 130751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI> procedureColumnUnknown - nobody knows 130851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI> procedureColumnIn - IN parameter 130951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI> procedureColumnInOut - INOUT parameter 131051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI> procedureColumnOut - OUT parameter 131151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI> procedureColumnReturn - procedure return value 131251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI> procedureColumnResult - result column in <code>ResultSet</code> 131351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * </UL> 131451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>DATA_TYPE</B> int => SQL type from java.sql.Types 131551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>TYPE_NAME</B> String => SQL type name, for a UDT type the 131651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * type name is fully qualified 131751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>PRECISION</B> int => precision 131851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>LENGTH</B> int => length in bytes of data 131951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>SCALE</B> short => scale - null is returned for data types where 132051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * SCALE is not applicable. 132151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>RADIX</B> short => radix 132251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>NULLABLE</B> short => can it contain NULL. 132351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <UL> 132451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI> procedureNoNulls - does not allow NULL values 132551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI> procedureNullable - allows NULL values 132651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI> procedureNullableUnknown - nullability unknown 132751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * </UL> 132851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>REMARKS</B> String => comment describing parameter/column 132951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>COLUMN_DEF</B> String => default value for the column, which should be interpreted as a string when the value is enclosed in single quotes (may be <code>null</code>) 133051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <UL> 133151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI> The string NULL (not enclosed in quotes) - if NULL was specified as the default value 133251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI> TRUNCATE (not enclosed in quotes) - if the specified default value cannot be represented without truncation 133351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI> NULL - if a default value was not specified 133451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * </UL> 133551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>SQL_DATA_TYPE</B> int => reserved for future use 133651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>SQL_DATETIME_SUB</B> int => reserved for future use 133751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>CHAR_OCTET_LENGTH</B> int => the maximum length of binary and character based columns. For any other datatype the returned value is a 133851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * NULL 133951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>ORDINAL_POSITION</B> int => the ordinal position, starting from 1, for the input and output parameters for a procedure. A value of 0 134051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski *is returned if this row describes the procedure's return value. For result set columns, it is the 134151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski *ordinal position of the column in the result set starting from 1. If there are 134251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski *multiple result sets, the column ordinal positions are implementation 134351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * defined. 134451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>IS_NULLABLE</B> String => ISO rules are used to determine the nullability for a column. 134551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <UL> 134651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI> YES --- if the column can include NULLs 134751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI> NO --- if the column cannot include NULLs 134851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI> empty string --- if the nullability for the 134951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * column is unknown 135051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * </UL> 135151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>SPECIFIC_NAME</B> String => the name which uniquely identifies this procedure within its schema. 135251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * </OL> 135351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 135451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <P><B>Note:</B> Some databases may not return the column 135551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * descriptions for a procedure. 135651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 135751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <p>The PRECISION column represents the specified column size for the given column. 135851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * For numeric data, this is the maximum precision. For character data, this is the length in characters. 135951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * For datetime datatypes, this is the length in characters of the String representation (assuming the 136051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * maximum allowed precision of the fractional seconds component). For binary data, this is the length in bytes. For the ROWID datatype, 136151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * this is the length in bytes. Null is returned for data types where the 136251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * column size is not applicable. 136351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @param catalog a catalog name; must match the catalog name as it 136451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * is stored in the database; "" retrieves those without a catalog; 136551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>null</code> means that the catalog name should not be used to narrow 136651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * the search 136751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @param schemaPattern a schema name pattern; must match the schema name 136851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * as it is stored in the database; "" retrieves those without a schema; 136951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>null</code> means that the schema name should not be used to narrow 137051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * the search 137151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @param procedureNamePattern a procedure name pattern; must match the 137251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * procedure name as it is stored in the database 137351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @param columnNamePattern a column name pattern; must match the column name 137451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * as it is stored in the database 137551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return <code>ResultSet</code> - each row describes a stored procedure parameter or 137651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * column 137751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 137851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @see #getSearchStringEscape 137951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 138051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski ResultSet getProcedureColumns(String catalog, 138151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski String schemaPattern, 138251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski String procedureNamePattern, 138351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski String columnNamePattern) throws SQLException; 138451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 138551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 138651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Indicates that type of the column is unknown. 138751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <P> 138851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * A possible value for the column 138951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>COLUMN_TYPE</code> 139051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * in the <code>ResultSet</code> 139151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * returned by the method <code>getProcedureColumns</code>. 139251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 139351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski int procedureColumnUnknown = 0; 139451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 139551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 139651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Indicates that the column stores IN parameters. 139751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <P> 139851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * A possible value for the column 139951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>COLUMN_TYPE</code> 140051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * in the <code>ResultSet</code> 140151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * returned by the method <code>getProcedureColumns</code>. 140251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 140351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski int procedureColumnIn = 1; 140451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 140551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 140651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Indicates that the column stores INOUT parameters. 140751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <P> 140851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * A possible value for the column 140951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>COLUMN_TYPE</code> 141051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * in the <code>ResultSet</code> 141151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * returned by the method <code>getProcedureColumns</code>. 141251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 141351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski int procedureColumnInOut = 2; 141451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 141551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 141651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Indicates that the column stores OUT parameters. 141751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <P> 141851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * A possible value for the column 141951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>COLUMN_TYPE</code> 142051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * in the <code>ResultSet</code> 142151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * returned by the method <code>getProcedureColumns</code>. 142251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 142351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski int procedureColumnOut = 4; 142451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 142551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Indicates that the column stores return values. 142651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <P> 142751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * A possible value for the column 142851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>COLUMN_TYPE</code> 142951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * in the <code>ResultSet</code> 143051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * returned by the method <code>getProcedureColumns</code>. 143151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 143251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski int procedureColumnReturn = 5; 143351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 143451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 143551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Indicates that the column stores results. 143651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <P> 143751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * A possible value for the column 143851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>COLUMN_TYPE</code> 143951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * in the <code>ResultSet</code> 144051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * returned by the method <code>getProcedureColumns</code>. 144151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 144251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski int procedureColumnResult = 3; 144351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 144451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 144551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Indicates that <code>NULL</code> values are not allowed. 144651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <P> 144751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * A possible value for the column 144851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>NULLABLE</code> 144951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * in the <code>ResultSet</code> object 145051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * returned by the method <code>getProcedureColumns</code>. 145151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 145251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski int procedureNoNulls = 0; 145351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 145451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 145551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Indicates that <code>NULL</code> values are allowed. 145651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <P> 145751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * A possible value for the column 145851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>NULLABLE</code> 145951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * in the <code>ResultSet</code> object 146051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * returned by the method <code>getProcedureColumns</code>. 146151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 146251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski int procedureNullable = 1; 146351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 146451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 146551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Indicates that whether <code>NULL</code> values are allowed 146651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * is unknown. 146751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <P> 146851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * A possible value for the column 146951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>NULLABLE</code> 147051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * in the <code>ResultSet</code> object 147151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * returned by the method <code>getProcedureColumns</code>. 147251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 147351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski int procedureNullableUnknown = 2; 147451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 147551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 147651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 147751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves a description of the tables available in the given catalog. 147851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Only table descriptions matching the catalog, schema, table 147951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * name and type criteria are returned. They are ordered by 148051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>TABLE_TYPE</code>, <code>TABLE_CAT</code>, 148151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>TABLE_SCHEM</code> and <code>TABLE_NAME</code>. 148251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <P> 148351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Each table description has the following columns: 148451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <OL> 148551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>TABLE_CAT</B> String => table catalog (may be <code>null</code>) 148651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>TABLE_SCHEM</B> String => table schema (may be <code>null</code>) 148751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>TABLE_NAME</B> String => table name 148851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>TABLE_TYPE</B> String => table type. Typical types are "TABLE", 148951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * "VIEW", "SYSTEM TABLE", "GLOBAL TEMPORARY", 149051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * "LOCAL TEMPORARY", "ALIAS", "SYNONYM". 149151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>REMARKS</B> String => explanatory comment on the table 149251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>TYPE_CAT</B> String => the types catalog (may be <code>null</code>) 149351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>TYPE_SCHEM</B> String => the types schema (may be <code>null</code>) 149451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>TYPE_NAME</B> String => type name (may be <code>null</code>) 149551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>SELF_REFERENCING_COL_NAME</B> String => name of the designated 149651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * "identifier" column of a typed table (may be <code>null</code>) 149751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>REF_GENERATION</B> String => specifies how values in 149851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * SELF_REFERENCING_COL_NAME are created. Values are 149951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * "SYSTEM", "USER", "DERIVED". (may be <code>null</code>) 150051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * </OL> 150151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 150251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <P><B>Note:</B> Some databases may not return information for 150351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * all tables. 150451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 150551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @param catalog a catalog name; must match the catalog name as it 150651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * is stored in the database; "" retrieves those without a catalog; 150751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>null</code> means that the catalog name should not be used to narrow 150851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * the search 150951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @param schemaPattern a schema name pattern; must match the schema name 151051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * as it is stored in the database; "" retrieves those without a schema; 151151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>null</code> means that the schema name should not be used to narrow 151251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * the search 151351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @param tableNamePattern a table name pattern; must match the 151451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * table name as it is stored in the database 151551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @param types a list of table types, which must be from the list of table types 151651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * returned from {@link #getTableTypes},to include; <code>null</code> returns 151751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * all types 151851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return <code>ResultSet</code> - each row is a table description 151951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 152051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @see #getSearchStringEscape 152151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 152251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski ResultSet getTables(String catalog, String schemaPattern, 152351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski String tableNamePattern, String types[]) throws SQLException; 152451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 152551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 152651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves the schema names available in this database. The results 152751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * are ordered by <code>TABLE_CATALOG</code> and 152851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>TABLE_SCHEM</code>. 152951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 153051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <P>The schema columns are: 153151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <OL> 153251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>TABLE_SCHEM</B> String => schema name 153351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>TABLE_CATALOG</B> String => catalog name (may be <code>null</code>) 153451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * </OL> 153551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 153651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return a <code>ResultSet</code> object in which each row is a 153751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * schema description 153851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 153951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 154051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 154151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski ResultSet getSchemas() throws SQLException; 154251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 154351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 154451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves the catalog names available in this database. The results 154551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * are ordered by catalog name. 154651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 154751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <P>The catalog column is: 154851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <OL> 154951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>TABLE_CAT</B> String => catalog name 155051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * </OL> 155151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 155251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return a <code>ResultSet</code> object in which each row has a 155351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * single <code>String</code> column that is a catalog name 155451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 155551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 155651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski ResultSet getCatalogs() throws SQLException; 155751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 155851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 155951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves the table types available in this database. The results 156051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * are ordered by table type. 156151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 156251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <P>The table type is: 156351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <OL> 156451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>TABLE_TYPE</B> String => table type. Typical types are "TABLE", 156551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * "VIEW", "SYSTEM TABLE", "GLOBAL TEMPORARY", 156651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * "LOCAL TEMPORARY", "ALIAS", "SYNONYM". 156751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * </OL> 156851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 156951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return a <code>ResultSet</code> object in which each row has a 157051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * single <code>String</code> column that is a table type 157151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 157251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 157351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski ResultSet getTableTypes() throws SQLException; 157451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 157551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 157651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves a description of table columns available in 157751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * the specified catalog. 157851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 157951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <P>Only column descriptions matching the catalog, schema, table 158051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * and column name criteria are returned. They are ordered by 158151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>TABLE_CAT</code>,<code>TABLE_SCHEM</code>, 158251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>TABLE_NAME</code>, and <code>ORDINAL_POSITION</code>. 158351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 158451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <P>Each column description has the following columns: 158551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <OL> 158651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>TABLE_CAT</B> String => table catalog (may be <code>null</code>) 158751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>TABLE_SCHEM</B> String => table schema (may be <code>null</code>) 158851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>TABLE_NAME</B> String => table name 158951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>COLUMN_NAME</B> String => column name 159051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>DATA_TYPE</B> int => SQL type from java.sql.Types 159151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>TYPE_NAME</B> String => Data source dependent type name, 159251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * for a UDT the type name is fully qualified 159351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>COLUMN_SIZE</B> int => column size. 159451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>BUFFER_LENGTH</B> is not used. 159551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>DECIMAL_DIGITS</B> int => the number of fractional digits. Null is returned for data types where 159651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * DECIMAL_DIGITS is not applicable. 159751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>NUM_PREC_RADIX</B> int => Radix (typically either 10 or 2) 159851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>NULLABLE</B> int => is NULL allowed. 159951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <UL> 160051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI> columnNoNulls - might not allow <code>NULL</code> values 160151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI> columnNullable - definitely allows <code>NULL</code> values 160251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI> columnNullableUnknown - nullability unknown 160351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * </UL> 160451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>REMARKS</B> String => comment describing column (may be <code>null</code>) 160551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>COLUMN_DEF</B> String => default value for the column, which should be interpreted as a string when the value is enclosed in single quotes (may be <code>null</code>) 160651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>SQL_DATA_TYPE</B> int => unused 160751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>SQL_DATETIME_SUB</B> int => unused 160851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>CHAR_OCTET_LENGTH</B> int => for char types the 160951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * maximum number of bytes in the column 161051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>ORDINAL_POSITION</B> int => index of column in table 161151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * (starting at 1) 161251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>IS_NULLABLE</B> String => ISO rules are used to determine the nullability for a column. 161351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <UL> 161451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI> YES --- if the column can include NULLs 161551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI> NO --- if the column cannot include NULLs 161651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI> empty string --- if the nullability for the 161751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * column is unknown 161851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * </UL> 161951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>SCOPE_CATALOG</B> String => catalog of table that is the scope 162051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * of a reference attribute (<code>null</code> if DATA_TYPE isn't REF) 162151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>SCOPE_SCHEMA</B> String => schema of table that is the scope 162251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * of a reference attribute (<code>null</code> if the DATA_TYPE isn't REF) 162351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>SCOPE_TABLE</B> String => table name that this the scope 162451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * of a reference attribute (<code>null</code> if the DATA_TYPE isn't REF) 162551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>SOURCE_DATA_TYPE</B> short => source type of a distinct type or user-generated 162651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Ref type, SQL type from java.sql.Types (<code>null</code> if DATA_TYPE 162751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * isn't DISTINCT or user-generated REF) 162851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>IS_AUTOINCREMENT</B> String => Indicates whether this column is auto incremented 162951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <UL> 163051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI> YES --- if the column is auto incremented 163151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI> NO --- if the column is not auto incremented 163251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI> empty string --- if it cannot be determined whether the column is auto incremented 163351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * </UL> 163451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>IS_GENERATEDCOLUMN</B> String => Indicates whether this is a generated column 163551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <UL> 163651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI> YES --- if this a generated column 163751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI> NO --- if this not a generated column 163851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI> empty string --- if it cannot be determined whether this is a generated column 163951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * </UL> 164051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * </OL> 164151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 164251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <p>The COLUMN_SIZE column specifies the column size for the given column. 164351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * For numeric data, this is the maximum precision. For character data, this is the length in characters. 164451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * For datetime datatypes, this is the length in characters of the String representation (assuming the 164551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * maximum allowed precision of the fractional seconds component). For binary data, this is the length in bytes. For the ROWID datatype, 164651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * this is the length in bytes. Null is returned for data types where the 164751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * column size is not applicable. 164851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 164951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @param catalog a catalog name; must match the catalog name as it 165051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * is stored in the database; "" retrieves those without a catalog; 165151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>null</code> means that the catalog name should not be used to narrow 165251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * the search 165351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @param schemaPattern a schema name pattern; must match the schema name 165451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * as it is stored in the database; "" retrieves those without a schema; 165551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>null</code> means that the schema name should not be used to narrow 165651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * the search 165751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @param tableNamePattern a table name pattern; must match the 165851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * table name as it is stored in the database 165951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @param columnNamePattern a column name pattern; must match the column 166051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * name as it is stored in the database 166151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return <code>ResultSet</code> - each row is a column description 166251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 166351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @see #getSearchStringEscape 166451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 166551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski ResultSet getColumns(String catalog, String schemaPattern, 166651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski String tableNamePattern, String columnNamePattern) 166751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski throws SQLException; 166851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 166951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 167051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Indicates that the column might not allow <code>NULL</code> values. 167151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <P> 167251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * A possible value for the column 167351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>NULLABLE</code> 167451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * in the <code>ResultSet</code> returned by the method 167551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>getColumns</code>. 167651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 167751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski int columnNoNulls = 0; 167851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 167951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 168051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Indicates that the column definitely allows <code>NULL</code> values. 168151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <P> 168251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * A possible value for the column 168351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>NULLABLE</code> 168451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * in the <code>ResultSet</code> returned by the method 168551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>getColumns</code>. 168651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 168751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski int columnNullable = 1; 168851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 168951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 169051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Indicates that the nullability of columns is unknown. 169151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <P> 169251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * A possible value for the column 169351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>NULLABLE</code> 169451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * in the <code>ResultSet</code> returned by the method 169551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>getColumns</code>. 169651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 169751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski int columnNullableUnknown = 2; 169851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 169951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 170051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves a description of the access rights for a table's columns. 170151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 170251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <P>Only privileges matching the column name criteria are 170351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * returned. They are ordered by COLUMN_NAME and PRIVILEGE. 170451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 170551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <P>Each privilige description has the following columns: 170651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <OL> 170751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>TABLE_CAT</B> String => table catalog (may be <code>null</code>) 170851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>TABLE_SCHEM</B> String => table schema (may be <code>null</code>) 170951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>TABLE_NAME</B> String => table name 171051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>COLUMN_NAME</B> String => column name 171151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>GRANTOR</B> String => grantor of access (may be <code>null</code>) 171251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>GRANTEE</B> String => grantee of access 171351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>PRIVILEGE</B> String => name of access (SELECT, 171451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * INSERT, UPDATE, REFRENCES, ...) 171551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>IS_GRANTABLE</B> String => "YES" if grantee is permitted 171651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * to grant to others; "NO" if not; <code>null</code> if unknown 171751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * </OL> 171851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 171951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @param catalog a catalog name; must match the catalog name as it 172051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * is stored in the database; "" retrieves those without a catalog; 172151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>null</code> means that the catalog name should not be used to narrow 172251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * the search 172351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @param schema a schema name; must match the schema name as it is 172451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * stored in the database; "" retrieves those without a schema; 172551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>null</code> means that the schema name should not be used to narrow 172651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * the search 172751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @param table a table name; must match the table name as it is 172851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * stored in the database 172951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @param columnNamePattern a column name pattern; must match the column 173051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * name as it is stored in the database 173151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return <code>ResultSet</code> - each row is a column privilege description 173251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 173351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @see #getSearchStringEscape 173451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 173551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski ResultSet getColumnPrivileges(String catalog, String schema, 173651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski String table, String columnNamePattern) throws SQLException; 173751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 173851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 173951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves a description of the access rights for each table available 174051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * in a catalog. Note that a table privilege applies to one or 174151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * more columns in the table. It would be wrong to assume that 174251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * this privilege applies to all columns (this may be true for 174351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * some systems but is not true for all.) 174451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 174551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <P>Only privileges matching the schema and table name 174651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * criteria are returned. They are ordered by 174751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>TABLE_CAT</code>, 174851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>TABLE_SCHEM</code>, <code>TABLE_NAME</code>, 174951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * and <code>PRIVILEGE</code>. 175051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 175151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <P>Each privilige description has the following columns: 175251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <OL> 175351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>TABLE_CAT</B> String => table catalog (may be <code>null</code>) 175451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>TABLE_SCHEM</B> String => table schema (may be <code>null</code>) 175551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>TABLE_NAME</B> String => table name 175651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>GRANTOR</B> String => grantor of access (may be <code>null</code>) 175751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>GRANTEE</B> String => grantee of access 175851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>PRIVILEGE</B> String => name of access (SELECT, 175951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * INSERT, UPDATE, REFRENCES, ...) 176051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>IS_GRANTABLE</B> String => "YES" if grantee is permitted 176151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * to grant to others; "NO" if not; <code>null</code> if unknown 176251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * </OL> 176351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 176451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @param catalog a catalog name; must match the catalog name as it 176551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * is stored in the database; "" retrieves those without a catalog; 176651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>null</code> means that the catalog name should not be used to narrow 176751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * the search 176851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @param schemaPattern a schema name pattern; must match the schema name 176951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * as it is stored in the database; "" retrieves those without a schema; 177051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>null</code> means that the schema name should not be used to narrow 177151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * the search 177251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @param tableNamePattern a table name pattern; must match the 177351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * table name as it is stored in the database 177451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return <code>ResultSet</code> - each row is a table privilege description 177551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 177651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @see #getSearchStringEscape 177751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 177851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski ResultSet getTablePrivileges(String catalog, String schemaPattern, 177951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski String tableNamePattern) throws SQLException; 178051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 178151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 178251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves a description of a table's optimal set of columns that 178351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * uniquely identifies a row. They are ordered by SCOPE. 178451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 178551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <P>Each column description has the following columns: 178651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <OL> 178751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>SCOPE</B> short => actual scope of result 178851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <UL> 178951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI> bestRowTemporary - very temporary, while using row 179051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI> bestRowTransaction - valid for remainder of current transaction 179151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI> bestRowSession - valid for remainder of current session 179251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * </UL> 179351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>COLUMN_NAME</B> String => column name 179451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>DATA_TYPE</B> int => SQL data type from java.sql.Types 179551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>TYPE_NAME</B> String => Data source dependent type name, 179651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * for a UDT the type name is fully qualified 179751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>COLUMN_SIZE</B> int => precision 179851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>BUFFER_LENGTH</B> int => not used 179951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>DECIMAL_DIGITS</B> short => scale - Null is returned for data types where 180051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * DECIMAL_DIGITS is not applicable. 180151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>PSEUDO_COLUMN</B> short => is this a pseudo column 180251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * like an Oracle ROWID 180351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <UL> 180451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI> bestRowUnknown - may or may not be pseudo column 180551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI> bestRowNotPseudo - is NOT a pseudo column 180651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI> bestRowPseudo - is a pseudo column 180751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * </UL> 180851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * </OL> 180951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 181051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <p>The COLUMN_SIZE column represents the specified column size for the given column. 181151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * For numeric data, this is the maximum precision. For character data, this is the length in characters. 181251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * For datetime datatypes, this is the length in characters of the String representation (assuming the 181351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * maximum allowed precision of the fractional seconds component). For binary data, this is the length in bytes. For the ROWID datatype, 181451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * this is the length in bytes. Null is returned for data types where the 181551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * column size is not applicable. 181651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 181751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @param catalog a catalog name; must match the catalog name as it 181851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * is stored in the database; "" retrieves those without a catalog; 181951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>null</code> means that the catalog name should not be used to narrow 182051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * the search 182151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @param schema a schema name; must match the schema name 182251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * as it is stored in the database; "" retrieves those without a schema; 182351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>null</code> means that the schema name should not be used to narrow 182451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * the search 182551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @param table a table name; must match the table name as it is stored 182651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * in the database 182751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @param scope the scope of interest; use same values as SCOPE 182851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @param nullable include columns that are nullable. 182951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return <code>ResultSet</code> - each row is a column description 183051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 183151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 183251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski ResultSet getBestRowIdentifier(String catalog, String schema, 183351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski String table, int scope, boolean nullable) throws SQLException; 183451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 183551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 183651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Indicates that the scope of the best row identifier is 183751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * very temporary, lasting only while the 183851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * row is being used. 183951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <P> 184051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * A possible value for the column 184151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>SCOPE</code> 184251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * in the <code>ResultSet</code> object 184351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * returned by the method <code>getBestRowIdentifier</code>. 184451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 184551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski int bestRowTemporary = 0; 184651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 184751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 184851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Indicates that the scope of the best row identifier is 184951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * the remainder of the current transaction. 185051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <P> 185151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * A possible value for the column 185251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>SCOPE</code> 185351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * in the <code>ResultSet</code> object 185451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * returned by the method <code>getBestRowIdentifier</code>. 185551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 185651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski int bestRowTransaction = 1; 185751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 185851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 185951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Indicates that the scope of the best row identifier is 186051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * the remainder of the current session. 186151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <P> 186251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * A possible value for the column 186351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>SCOPE</code> 186451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * in the <code>ResultSet</code> object 186551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * returned by the method <code>getBestRowIdentifier</code>. 186651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 186751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski int bestRowSession = 2; 186851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 186951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 187051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Indicates that the best row identifier may or may not be a pseudo column. 187151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <P> 187251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * A possible value for the column 187351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>PSEUDO_COLUMN</code> 187451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * in the <code>ResultSet</code> object 187551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * returned by the method <code>getBestRowIdentifier</code>. 187651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 187751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski int bestRowUnknown = 0; 187851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 187951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 188051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Indicates that the best row identifier is NOT a pseudo column. 188151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <P> 188251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * A possible value for the column 188351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>PSEUDO_COLUMN</code> 188451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * in the <code>ResultSet</code> object 188551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * returned by the method <code>getBestRowIdentifier</code>. 188651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 188751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski int bestRowNotPseudo = 1; 188851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 188951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 189051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Indicates that the best row identifier is a pseudo column. 189151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <P> 189251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * A possible value for the column 189351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>PSEUDO_COLUMN</code> 189451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * in the <code>ResultSet</code> object 189551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * returned by the method <code>getBestRowIdentifier</code>. 189651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 189751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski int bestRowPseudo = 2; 189851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 189951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 190051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves a description of a table's columns that are automatically 190151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * updated when any value in a row is updated. They are 190251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * unordered. 190351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 190451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <P>Each column description has the following columns: 190551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <OL> 190651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>SCOPE</B> short => is not used 190751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>COLUMN_NAME</B> String => column name 190851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>DATA_TYPE</B> int => SQL data type from <code>java.sql.Types</code> 190951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>TYPE_NAME</B> String => Data source-dependent type name 191051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>COLUMN_SIZE</B> int => precision 191151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>BUFFER_LENGTH</B> int => length of column value in bytes 191251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>DECIMAL_DIGITS</B> short => scale - Null is returned for data types where 191351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * DECIMAL_DIGITS is not applicable. 191451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>PSEUDO_COLUMN</B> short => whether this is pseudo column 191551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * like an Oracle ROWID 191651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <UL> 191751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI> versionColumnUnknown - may or may not be pseudo column 191851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI> versionColumnNotPseudo - is NOT a pseudo column 191951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI> versionColumnPseudo - is a pseudo column 192051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * </UL> 192151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * </OL> 192251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 192351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <p>The COLUMN_SIZE column represents the specified column size for the given column. 192451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * For numeric data, this is the maximum precision. For character data, this is the length in characters. 192551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * For datetime datatypes, this is the length in characters of the String representation (assuming the 192651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * maximum allowed precision of the fractional seconds component). For binary data, this is the length in bytes. For the ROWID datatype, 192751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * this is the length in bytes. Null is returned for data types where the 192851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * column size is not applicable. 192951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @param catalog a catalog name; must match the catalog name as it 193051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * is stored in the database; "" retrieves those without a catalog; 193151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>null</code> means that the catalog name should not be used to narrow 193251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * the search 193351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @param schema a schema name; must match the schema name 193451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * as it is stored in the database; "" retrieves those without a schema; 193551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>null</code> means that the schema name should not be used to narrow 193651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * the search 193751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @param table a table name; must match the table name as it is stored 193851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * in the database 193951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return a <code>ResultSet</code> object in which each row is a 194051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * column description 194151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 194251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 194351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski ResultSet getVersionColumns(String catalog, String schema, 194451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski String table) throws SQLException; 194551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 194651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 194751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Indicates that this version column may or may not be a pseudo column. 194851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <P> 194951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * A possible value for the column 195051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>PSEUDO_COLUMN</code> 195151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * in the <code>ResultSet</code> object 195251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * returned by the method <code>getVersionColumns</code>. 195351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 195451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski int versionColumnUnknown = 0; 195551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 195651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 195751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Indicates that this version column is NOT a pseudo column. 195851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <P> 195951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * A possible value for the column 196051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>PSEUDO_COLUMN</code> 196151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * in the <code>ResultSet</code> object 196251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * returned by the method <code>getVersionColumns</code>. 196351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 196451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski int versionColumnNotPseudo = 1; 196551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 196651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 196751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Indicates that this version column is a pseudo column. 196851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <P> 196951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * A possible value for the column 197051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>PSEUDO_COLUMN</code> 197151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * in the <code>ResultSet</code> object 197251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * returned by the method <code>getVersionColumns</code>. 197351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 197451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski int versionColumnPseudo = 2; 197551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 197651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 197751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves a description of the given table's primary key columns. They 197851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * are ordered by COLUMN_NAME. 197951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 198051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <P>Each primary key column description has the following columns: 198151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <OL> 198251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>TABLE_CAT</B> String => table catalog (may be <code>null</code>) 198351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>TABLE_SCHEM</B> String => table schema (may be <code>null</code>) 198451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>TABLE_NAME</B> String => table name 198551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>COLUMN_NAME</B> String => column name 198651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>KEY_SEQ</B> short => sequence number within primary key( a value 198751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * of 1 represents the first column of the primary key, a value of 2 would 198851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * represent the second column within the primary key). 198951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>PK_NAME</B> String => primary key name (may be <code>null</code>) 199051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * </OL> 199151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 199251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @param catalog a catalog name; must match the catalog name as it 199351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * is stored in the database; "" retrieves those without a catalog; 199451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>null</code> means that the catalog name should not be used to narrow 199551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * the search 199651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @param schema a schema name; must match the schema name 199751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * as it is stored in the database; "" retrieves those without a schema; 199851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>null</code> means that the schema name should not be used to narrow 199951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * the search 200051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @param table a table name; must match the table name as it is stored 200151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * in the database 200251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return <code>ResultSet</code> - each row is a primary key column description 200351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 200451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 200551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski ResultSet getPrimaryKeys(String catalog, String schema, 200651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski String table) throws SQLException; 200751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 200851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 200951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves a description of the primary key columns that are 201051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * referenced by the given table's foreign key columns (the primary keys 201151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * imported by a table). They are ordered by PKTABLE_CAT, 201251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * PKTABLE_SCHEM, PKTABLE_NAME, and KEY_SEQ. 201351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 201451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <P>Each primary key column description has the following columns: 201551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <OL> 201651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>PKTABLE_CAT</B> String => primary key table catalog 201751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * being imported (may be <code>null</code>) 201851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>PKTABLE_SCHEM</B> String => primary key table schema 201951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * being imported (may be <code>null</code>) 202051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>PKTABLE_NAME</B> String => primary key table name 202151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * being imported 202251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>PKCOLUMN_NAME</B> String => primary key column name 202351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * being imported 202451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>FKTABLE_CAT</B> String => foreign key table catalog (may be <code>null</code>) 202551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>FKTABLE_SCHEM</B> String => foreign key table schema (may be <code>null</code>) 202651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>FKTABLE_NAME</B> String => foreign key table name 202751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>FKCOLUMN_NAME</B> String => foreign key column name 202851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>KEY_SEQ</B> short => sequence number within a foreign key( a value 202951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * of 1 represents the first column of the foreign key, a value of 2 would 203051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * represent the second column within the foreign key). 203151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>UPDATE_RULE</B> short => What happens to a 203251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * foreign key when the primary key is updated: 203351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <UL> 203451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI> importedNoAction - do not allow update of primary 203551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * key if it has been imported 203651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI> importedKeyCascade - change imported key to agree 203751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * with primary key update 203851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI> importedKeySetNull - change imported key to <code>NULL</code> 203951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * if its primary key has been updated 204051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI> importedKeySetDefault - change imported key to default values 204151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * if its primary key has been updated 204251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI> importedKeyRestrict - same as importedKeyNoAction 204351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * (for ODBC 2.x compatibility) 204451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * </UL> 204551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>DELETE_RULE</B> short => What happens to 204651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * the foreign key when primary is deleted. 204751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <UL> 204851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI> importedKeyNoAction - do not allow delete of primary 204951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * key if it has been imported 205051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI> importedKeyCascade - delete rows that import a deleted key 205151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI> importedKeySetNull - change imported key to NULL if 205251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * its primary key has been deleted 205351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI> importedKeyRestrict - same as importedKeyNoAction 205451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * (for ODBC 2.x compatibility) 205551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI> importedKeySetDefault - change imported key to default if 205651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * its primary key has been deleted 205751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * </UL> 205851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>FK_NAME</B> String => foreign key name (may be <code>null</code>) 205951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>PK_NAME</B> String => primary key name (may be <code>null</code>) 206051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>DEFERRABILITY</B> short => can the evaluation of foreign key 206151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * constraints be deferred until commit 206251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <UL> 206351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI> importedKeyInitiallyDeferred - see SQL92 for definition 206451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI> importedKeyInitiallyImmediate - see SQL92 for definition 206551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI> importedKeyNotDeferrable - see SQL92 for definition 206651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * </UL> 206751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * </OL> 206851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 206951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @param catalog a catalog name; must match the catalog name as it 207051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * is stored in the database; "" retrieves those without a catalog; 207151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>null</code> means that the catalog name should not be used to narrow 207251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * the search 207351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @param schema a schema name; must match the schema name 207451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * as it is stored in the database; "" retrieves those without a schema; 207551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>null</code> means that the schema name should not be used to narrow 207651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * the search 207751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @param table a table name; must match the table name as it is stored 207851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * in the database 207951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return <code>ResultSet</code> - each row is a primary key column description 208051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 208151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @see #getExportedKeys 208251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 208351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski ResultSet getImportedKeys(String catalog, String schema, 208451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski String table) throws SQLException; 208551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 208651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 208751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * For the column <code>UPDATE_RULE</code>, 208851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * indicates that 208951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * when the primary key is updated, the foreign key (imported key) 209051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * is changed to agree with it. 209151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * For the column <code>DELETE_RULE</code>, 209251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * it indicates that 209351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * when the primary key is deleted, rows that imported that key 209451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * are deleted. 209551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <P> 209651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * A possible value for the columns <code>UPDATE_RULE</code> 209751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * and <code>DELETE_RULE</code> in the 209851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>ResultSet</code> objects returned by the methods 209951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>getImportedKeys</code>, <code>getExportedKeys</code>, 210051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * and <code>getCrossReference</code>. 210151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 210251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski int importedKeyCascade = 0; 210351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 210451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 210551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * For the column <code>UPDATE_RULE</code>, indicates that 210651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * a primary key may not be updated if it has been imported by 210751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * another table as a foreign key. 210851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * For the column <code>DELETE_RULE</code>, indicates that 210951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * a primary key may not be deleted if it has been imported by 211051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * another table as a foreign key. 211151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <P> 211251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * A possible value for the columns <code>UPDATE_RULE</code> 211351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * and <code>DELETE_RULE</code> in the 211451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>ResultSet</code> objects returned by the methods 211551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>getImportedKeys</code>, <code>getExportedKeys</code>, 211651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * and <code>getCrossReference</code>. 211751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 211851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski int importedKeyRestrict = 1; 211951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 212051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 212151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * For the columns <code>UPDATE_RULE</code> 212251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * and <code>DELETE_RULE</code>, indicates that 212351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * when the primary key is updated or deleted, the foreign key (imported key) 212451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * is changed to <code>NULL</code>. 212551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <P> 212651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * A possible value for the columns <code>UPDATE_RULE</code> 212751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * and <code>DELETE_RULE</code> in the 212851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>ResultSet</code> objects returned by the methods 212951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>getImportedKeys</code>, <code>getExportedKeys</code>, 213051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * and <code>getCrossReference</code>. 213151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 213251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski int importedKeySetNull = 2; 213351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 213451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 213551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * For the columns <code>UPDATE_RULE</code> 213651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * and <code>DELETE_RULE</code>, indicates that 213751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * if the primary key has been imported, it cannot be updated or deleted. 213851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <P> 213951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * A possible value for the columns <code>UPDATE_RULE</code> 214051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * and <code>DELETE_RULE</code> in the 214151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>ResultSet</code> objects returned by the methods 214251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>getImportedKeys</code>, <code>getExportedKeys</code>, 214351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * and <code>getCrossReference</code>. 214451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 214551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski int importedKeyNoAction = 3; 214651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 214751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 214851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * For the columns <code>UPDATE_RULE</code> 214951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * and <code>DELETE_RULE</code>, indicates that 215051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * if the primary key is updated or deleted, the foreign key (imported key) 215151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * is set to the default value. 215251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <P> 215351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * A possible value for the columns <code>UPDATE_RULE</code> 215451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * and <code>DELETE_RULE</code> in the 215551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>ResultSet</code> objects returned by the methods 215651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>getImportedKeys</code>, <code>getExportedKeys</code>, 215751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * and <code>getCrossReference</code>. 215851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 215951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski int importedKeySetDefault = 4; 216051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 216151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 216251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Indicates deferrability. See SQL-92 for a definition. 216351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <P> 216451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * A possible value for the column <code>DEFERRABILITY</code> 216551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * in the <code>ResultSet</code> objects returned by the methods 216651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>getImportedKeys</code>, <code>getExportedKeys</code>, 216751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * and <code>getCrossReference</code>. 216851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 216951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski int importedKeyInitiallyDeferred = 5; 217051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 217151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 217251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Indicates deferrability. See SQL-92 for a definition. 217351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <P> 217451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * A possible value for the column <code>DEFERRABILITY</code> 217551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * in the <code>ResultSet</code> objects returned by the methods 217651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>getImportedKeys</code>, <code>getExportedKeys</code>, 217751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * and <code>getCrossReference</code>. 217851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 217951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski int importedKeyInitiallyImmediate = 6; 218051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 218151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 218251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Indicates deferrability. See SQL-92 for a definition. 218351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <P> 218451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * A possible value for the column <code>DEFERRABILITY</code> 218551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * in the <code>ResultSet</code> objects returned by the methods 218651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>getImportedKeys</code>, <code>getExportedKeys</code>, 218751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * and <code>getCrossReference</code>. 218851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 218951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski int importedKeyNotDeferrable = 7; 219051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 219151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 219251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves a description of the foreign key columns that reference the 219351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * given table's primary key columns (the foreign keys exported by a 219451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * table). They are ordered by FKTABLE_CAT, FKTABLE_SCHEM, 219551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * FKTABLE_NAME, and KEY_SEQ. 219651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 219751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <P>Each foreign key column description has the following columns: 219851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <OL> 219951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>PKTABLE_CAT</B> String => primary key table catalog (may be <code>null</code>) 220051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>PKTABLE_SCHEM</B> String => primary key table schema (may be <code>null</code>) 220151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>PKTABLE_NAME</B> String => primary key table name 220251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>PKCOLUMN_NAME</B> String => primary key column name 220351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>FKTABLE_CAT</B> String => foreign key table catalog (may be <code>null</code>) 220451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * being exported (may be <code>null</code>) 220551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>FKTABLE_SCHEM</B> String => foreign key table schema (may be <code>null</code>) 220651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * being exported (may be <code>null</code>) 220751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>FKTABLE_NAME</B> String => foreign key table name 220851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * being exported 220951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>FKCOLUMN_NAME</B> String => foreign key column name 221051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * being exported 221151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>KEY_SEQ</B> short => sequence number within foreign key( a value 221251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * of 1 represents the first column of the foreign key, a value of 2 would 221351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * represent the second column within the foreign key). 221451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>UPDATE_RULE</B> short => What happens to 221551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * foreign key when primary is updated: 221651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <UL> 221751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI> importedNoAction - do not allow update of primary 221851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * key if it has been imported 221951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI> importedKeyCascade - change imported key to agree 222051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * with primary key update 222151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI> importedKeySetNull - change imported key to <code>NULL</code> if 222251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * its primary key has been updated 222351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI> importedKeySetDefault - change imported key to default values 222451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * if its primary key has been updated 222551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI> importedKeyRestrict - same as importedKeyNoAction 222651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * (for ODBC 2.x compatibility) 222751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * </UL> 222851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>DELETE_RULE</B> short => What happens to 222951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * the foreign key when primary is deleted. 223051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <UL> 223151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI> importedKeyNoAction - do not allow delete of primary 223251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * key if it has been imported 223351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI> importedKeyCascade - delete rows that import a deleted key 223451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI> importedKeySetNull - change imported key to <code>NULL</code> if 223551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * its primary key has been deleted 223651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI> importedKeyRestrict - same as importedKeyNoAction 223751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * (for ODBC 2.x compatibility) 223851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI> importedKeySetDefault - change imported key to default if 223951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * its primary key has been deleted 224051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * </UL> 224151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>FK_NAME</B> String => foreign key name (may be <code>null</code>) 224251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>PK_NAME</B> String => primary key name (may be <code>null</code>) 224351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>DEFERRABILITY</B> short => can the evaluation of foreign key 224451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * constraints be deferred until commit 224551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <UL> 224651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI> importedKeyInitiallyDeferred - see SQL92 for definition 224751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI> importedKeyInitiallyImmediate - see SQL92 for definition 224851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI> importedKeyNotDeferrable - see SQL92 for definition 224951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * </UL> 225051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * </OL> 225151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 225251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @param catalog a catalog name; must match the catalog name as it 225351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * is stored in this database; "" retrieves those without a catalog; 225451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>null</code> means that the catalog name should not be used to narrow 225551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * the search 225651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @param schema a schema name; must match the schema name 225751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * as it is stored in the database; "" retrieves those without a schema; 225851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>null</code> means that the schema name should not be used to narrow 225951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * the search 226051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @param table a table name; must match the table name as it is stored 226151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * in this database 226251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return a <code>ResultSet</code> object in which each row is a 226351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * foreign key column description 226451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 226551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @see #getImportedKeys 226651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 226751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski ResultSet getExportedKeys(String catalog, String schema, 226851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski String table) throws SQLException; 226951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 227051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 227151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves a description of the foreign key columns in the given foreign key 227251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * table that reference the primary key or the columns representing a unique constraint of the parent table (could be the same or a different table). 227351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * The number of columns returned from the parent table must match the number of 227451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * columns that make up the foreign key. They 227551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * are ordered by FKTABLE_CAT, FKTABLE_SCHEM, FKTABLE_NAME, and 227651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * KEY_SEQ. 227751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 227851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <P>Each foreign key column description has the following columns: 227951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <OL> 228051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>PKTABLE_CAT</B> String => parent key table catalog (may be <code>null</code>) 228151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>PKTABLE_SCHEM</B> String => parent key table schema (may be <code>null</code>) 228251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>PKTABLE_NAME</B> String => parent key table name 228351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>PKCOLUMN_NAME</B> String => parent key column name 228451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>FKTABLE_CAT</B> String => foreign key table catalog (may be <code>null</code>) 228551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * being exported (may be <code>null</code>) 228651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>FKTABLE_SCHEM</B> String => foreign key table schema (may be <code>null</code>) 228751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * being exported (may be <code>null</code>) 228851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>FKTABLE_NAME</B> String => foreign key table name 228951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * being exported 229051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>FKCOLUMN_NAME</B> String => foreign key column name 229151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * being exported 229251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>KEY_SEQ</B> short => sequence number within foreign key( a value 229351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * of 1 represents the first column of the foreign key, a value of 2 would 229451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * represent the second column within the foreign key). 229551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>UPDATE_RULE</B> short => What happens to 229651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * foreign key when parent key is updated: 229751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <UL> 229851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI> importedNoAction - do not allow update of parent 229951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * key if it has been imported 230051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI> importedKeyCascade - change imported key to agree 230151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * with parent key update 230251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI> importedKeySetNull - change imported key to <code>NULL</code> if 230351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * its parent key has been updated 230451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI> importedKeySetDefault - change imported key to default values 230551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * if its parent key has been updated 230651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI> importedKeyRestrict - same as importedKeyNoAction 230751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * (for ODBC 2.x compatibility) 230851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * </UL> 230951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>DELETE_RULE</B> short => What happens to 231051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * the foreign key when parent key is deleted. 231151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <UL> 231251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI> importedKeyNoAction - do not allow delete of parent 231351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * key if it has been imported 231451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI> importedKeyCascade - delete rows that import a deleted key 231551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI> importedKeySetNull - change imported key to <code>NULL</code> if 231651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * its primary key has been deleted 231751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI> importedKeyRestrict - same as importedKeyNoAction 231851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * (for ODBC 2.x compatibility) 231951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI> importedKeySetDefault - change imported key to default if 232051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * its parent key has been deleted 232151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * </UL> 232251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>FK_NAME</B> String => foreign key name (may be <code>null</code>) 232351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>PK_NAME</B> String => parent key name (may be <code>null</code>) 232451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>DEFERRABILITY</B> short => can the evaluation of foreign key 232551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * constraints be deferred until commit 232651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <UL> 232751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI> importedKeyInitiallyDeferred - see SQL92 for definition 232851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI> importedKeyInitiallyImmediate - see SQL92 for definition 232951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI> importedKeyNotDeferrable - see SQL92 for definition 233051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * </UL> 233151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * </OL> 233251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 233351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @param parentCatalog a catalog name; must match the catalog name 233451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * as it is stored in the database; "" retrieves those without a 233551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * catalog; <code>null</code> means drop catalog name from the selection criteria 233651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @param parentSchema a schema name; must match the schema name as 233751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * it is stored in the database; "" retrieves those without a schema; 233851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>null</code> means drop schema name from the selection criteria 233951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @param parentTable the name of the table that exports the key; must match 234051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * the table name as it is stored in the database 234151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @param foreignCatalog a catalog name; must match the catalog name as 234251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * it is stored in the database; "" retrieves those without a 234351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * catalog; <code>null</code> means drop catalog name from the selection criteria 234451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @param foreignSchema a schema name; must match the schema name as it 234551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * is stored in the database; "" retrieves those without a schema; 234651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>null</code> means drop schema name from the selection criteria 234751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @param foreignTable the name of the table that imports the key; must match 234851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * the table name as it is stored in the database 234951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return <code>ResultSet</code> - each row is a foreign key column description 235051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 235151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @see #getImportedKeys 235251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 235351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski ResultSet getCrossReference( 235451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski String parentCatalog, String parentSchema, String parentTable, 235551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski String foreignCatalog, String foreignSchema, String foreignTable 235651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski ) throws SQLException; 235751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 235851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 235951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves a description of all the data types supported by 236051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * this database. They are ordered by DATA_TYPE and then by how 236151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * closely the data type maps to the corresponding JDBC SQL type. 236251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 236351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <P>If the database supports SQL distinct types, then getTypeInfo() will return 236451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * a single row with a TYPE_NAME of DISTINCT and a DATA_TYPE of Types.DISTINCT. 236551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * If the database supports SQL structured types, then getTypeInfo() will return 236651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * a single row with a TYPE_NAME of STRUCT and a DATA_TYPE of Types.STRUCT. 236751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 236851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <P>If SQL distinct or structured types are supported, then information on the 236951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * individual types may be obtained from the getUDTs() method. 237051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 237151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 237251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 237351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <P>Each type description has the following columns: 237451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <OL> 237551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>TYPE_NAME</B> String => Type name 237651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>DATA_TYPE</B> int => SQL data type from java.sql.Types 237751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>PRECISION</B> int => maximum precision 237851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>LITERAL_PREFIX</B> String => prefix used to quote a literal 237951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * (may be <code>null</code>) 238051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>LITERAL_SUFFIX</B> String => suffix used to quote a literal 238151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski (may be <code>null</code>) 238251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>CREATE_PARAMS</B> String => parameters used in creating 238351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * the type (may be <code>null</code>) 238451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>NULLABLE</B> short => can you use NULL for this type. 238551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <UL> 238651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI> typeNoNulls - does not allow NULL values 238751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI> typeNullable - allows NULL values 238851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI> typeNullableUnknown - nullability unknown 238951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * </UL> 239051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>CASE_SENSITIVE</B> boolean=> is it case sensitive. 239151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>SEARCHABLE</B> short => can you use "WHERE" based on this type: 239251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <UL> 239351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI> typePredNone - No support 239451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI> typePredChar - Only supported with WHERE .. LIKE 239551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI> typePredBasic - Supported except for WHERE .. LIKE 239651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI> typeSearchable - Supported for all WHERE .. 239751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * </UL> 239851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>UNSIGNED_ATTRIBUTE</B> boolean => is it unsigned. 239951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>FIXED_PREC_SCALE</B> boolean => can it be a money value. 240051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>AUTO_INCREMENT</B> boolean => can it be used for an 240151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * auto-increment value. 240251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>LOCAL_TYPE_NAME</B> String => localized version of type name 240351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * (may be <code>null</code>) 240451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>MINIMUM_SCALE</B> short => minimum scale supported 240551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>MAXIMUM_SCALE</B> short => maximum scale supported 240651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>SQL_DATA_TYPE</B> int => unused 240751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>SQL_DATETIME_SUB</B> int => unused 240851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>NUM_PREC_RADIX</B> int => usually 2 or 10 240951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * </OL> 241051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 241151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <p>The PRECISION column represents the maximum column size that the server supports for the given datatype. 241251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * For numeric data, this is the maximum precision. For character data, this is the length in characters. 241351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * For datetime datatypes, this is the length in characters of the String representation (assuming the 241451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * maximum allowed precision of the fractional seconds component). For binary data, this is the length in bytes. For the ROWID datatype, 241551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * this is the length in bytes. Null is returned for data types where the 241651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * column size is not applicable. 241751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 241851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return a <code>ResultSet</code> object in which each row is an SQL 241951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * type description 242051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 242151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 242251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski ResultSet getTypeInfo() throws SQLException; 242351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 242451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 242551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Indicates that a <code>NULL</code> value is NOT allowed for this 242651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * data type. 242751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <P> 242851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * A possible value for column <code>NULLABLE</code> in the 242951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>ResultSet</code> object returned by the method 243051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>getTypeInfo</code>. 243151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 243251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski int typeNoNulls = 0; 243351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 243451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 243551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Indicates that a <code>NULL</code> value is allowed for this 243651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * data type. 243751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <P> 243851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * A possible value for column <code>NULLABLE</code> in the 243951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>ResultSet</code> object returned by the method 244051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>getTypeInfo</code>. 244151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 244251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski int typeNullable = 1; 244351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 244451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 244551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Indicates that it is not known whether a <code>NULL</code> value 244651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * is allowed for this data type. 244751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <P> 244851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * A possible value for column <code>NULLABLE</code> in the 244951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>ResultSet</code> object returned by the method 245051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>getTypeInfo</code>. 245151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 245251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski int typeNullableUnknown = 2; 245351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 245451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 245551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Indicates that <code>WHERE</code> search clauses are not supported 245651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * for this type. 245751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <P> 245851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * A possible value for column <code>SEARCHABLE</code> in the 245951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>ResultSet</code> object returned by the method 246051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>getTypeInfo</code>. 246151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 246251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski int typePredNone = 0; 246351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 246451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 246551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Indicates that the data type 246651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * can be only be used in <code>WHERE</code> search clauses 246751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * that use <code>LIKE</code> predicates. 246851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <P> 246951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * A possible value for column <code>SEARCHABLE</code> in the 247051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>ResultSet</code> object returned by the method 247151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>getTypeInfo</code>. 247251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 247351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski int typePredChar = 1; 247451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 247551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 247651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Indicates that the data type can be only be used in <code>WHERE</code> 247751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * search clauses 247851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * that do not use <code>LIKE</code> predicates. 247951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <P> 248051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * A possible value for column <code>SEARCHABLE</code> in the 248151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>ResultSet</code> object returned by the method 248251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>getTypeInfo</code>. 248351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 248451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski int typePredBasic = 2; 248551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 248651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 248751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Indicates that all <code>WHERE</code> search clauses can be 248851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * based on this type. 248951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <P> 249051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * A possible value for column <code>SEARCHABLE</code> in the 249151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>ResultSet</code> object returned by the method 249251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>getTypeInfo</code>. 249351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 249451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski int typeSearchable = 3; 249551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 249651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 249751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves a description of the given table's indices and statistics. They are 249851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * ordered by NON_UNIQUE, TYPE, INDEX_NAME, and ORDINAL_POSITION. 249951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 250051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <P>Each index column description has the following columns: 250151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <OL> 250251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>TABLE_CAT</B> String => table catalog (may be <code>null</code>) 250351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>TABLE_SCHEM</B> String => table schema (may be <code>null</code>) 250451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>TABLE_NAME</B> String => table name 250551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>NON_UNIQUE</B> boolean => Can index values be non-unique. 250651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * false when TYPE is tableIndexStatistic 250751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>INDEX_QUALIFIER</B> String => index catalog (may be <code>null</code>); 250851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>null</code> when TYPE is tableIndexStatistic 250951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>INDEX_NAME</B> String => index name; <code>null</code> when TYPE is 251051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * tableIndexStatistic 251151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>TYPE</B> short => index type: 251251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <UL> 251351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI> tableIndexStatistic - this identifies table statistics that are 251451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * returned in conjuction with a table's index descriptions 251551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI> tableIndexClustered - this is a clustered index 251651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI> tableIndexHashed - this is a hashed index 251751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI> tableIndexOther - this is some other style of index 251851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * </UL> 251951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>ORDINAL_POSITION</B> short => column sequence number 252051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * within index; zero when TYPE is tableIndexStatistic 252151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>COLUMN_NAME</B> String => column name; <code>null</code> when TYPE is 252251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * tableIndexStatistic 252351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>ASC_OR_DESC</B> String => column sort sequence, "A" => ascending, 252451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * "D" => descending, may be <code>null</code> if sort sequence is not supported; 252551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>null</code> when TYPE is tableIndexStatistic 252651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>CARDINALITY</B> int => When TYPE is tableIndexStatistic, then 252751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * this is the number of rows in the table; otherwise, it is the 252851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * number of unique values in the index. 252951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>PAGES</B> int => When TYPE is tableIndexStatisic then 253051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * this is the number of pages used for the table, otherwise it 253151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * is the number of pages used for the current index. 253251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>FILTER_CONDITION</B> String => Filter condition, if any. 253351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * (may be <code>null</code>) 253451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * </OL> 253551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 253651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @param catalog a catalog name; must match the catalog name as it 253751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * is stored in this database; "" retrieves those without a catalog; 253851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>null</code> means that the catalog name should not be used to narrow 253951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * the search 254051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @param schema a schema name; must match the schema name 254151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * as it is stored in this database; "" retrieves those without a schema; 254251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>null</code> means that the schema name should not be used to narrow 254351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * the search 254451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @param table a table name; must match the table name as it is stored 254551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * in this database 254651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @param unique when true, return only indices for unique values; 254751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * when false, return indices regardless of whether unique or not 254851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @param approximate when true, result is allowed to reflect approximate 254951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * or out of data values; when false, results are requested to be 255051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * accurate 255151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return <code>ResultSet</code> - each row is an index column description 255251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 255351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 255451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski ResultSet getIndexInfo(String catalog, String schema, String table, 255551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski boolean unique, boolean approximate) 255651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski throws SQLException; 255751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 255851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 255951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Indicates that this column contains table statistics that 256051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * are returned in conjunction with a table's index descriptions. 256151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <P> 256251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * A possible value for column <code>TYPE</code> in the 256351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>ResultSet</code> object returned by the method 256451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>getIndexInfo</code>. 256551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 256651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski short tableIndexStatistic = 0; 256751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 256851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 256951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Indicates that this table index is a clustered index. 257051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <P> 257151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * A possible value for column <code>TYPE</code> in the 257251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>ResultSet</code> object returned by the method 257351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>getIndexInfo</code>. 257451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 257551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski short tableIndexClustered = 1; 257651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 257751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 257851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Indicates that this table index is a hashed index. 257951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <P> 258051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * A possible value for column <code>TYPE</code> in the 258151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>ResultSet</code> object returned by the method 258251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>getIndexInfo</code>. 258351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 258451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski short tableIndexHashed = 2; 258551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 258651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 258751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Indicates that this table index is not a clustered 258851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * index, a hashed index, or table statistics; 258951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * it is something other than these. 259051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <P> 259151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * A possible value for column <code>TYPE</code> in the 259251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>ResultSet</code> object returned by the method 259351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>getIndexInfo</code>. 259451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 259551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski short tableIndexOther = 3; 259651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 259751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski //--------------------------JDBC 2.0----------------------------- 259851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 259951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 260051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves whether this database supports the given result set type. 260151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 260251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @param type defined in <code>java.sql.ResultSet</code> 260351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return <code>true</code> if so; <code>false</code> otherwise 260451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 260551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @see Connection 260651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @since 1.2 260751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 260851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski boolean supportsResultSetType(int type) throws SQLException; 260951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 261051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 261151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves whether this database supports the given concurrency type 261251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * in combination with the given result set type. 261351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 261451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @param type defined in <code>java.sql.ResultSet</code> 261551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @param concurrency type defined in <code>java.sql.ResultSet</code> 261651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return <code>true</code> if so; <code>false</code> otherwise 261751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 261851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @see Connection 261951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @since 1.2 262051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 262151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski boolean supportsResultSetConcurrency(int type, int concurrency) 262251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski throws SQLException; 262351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 262451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 262551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 262651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves whether for the given type of <code>ResultSet</code> object, 262751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * the result set's own updates are visible. 262851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 262951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @param type the <code>ResultSet</code> type; one of 263051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>ResultSet.TYPE_FORWARD_ONLY</code>, 263151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>ResultSet.TYPE_SCROLL_INSENSITIVE</code>, or 263251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>ResultSet.TYPE_SCROLL_SENSITIVE</code> 263351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return <code>true</code> if updates are visible for the given result set type; 263451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>false</code> otherwise 263551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 263651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @since 1.2 263751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 263851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski boolean ownUpdatesAreVisible(int type) throws SQLException; 263951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 264051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 264151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves whether a result set's own deletes are visible. 264251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 264351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @param type the <code>ResultSet</code> type; one of 264451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>ResultSet.TYPE_FORWARD_ONLY</code>, 264551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>ResultSet.TYPE_SCROLL_INSENSITIVE</code>, or 264651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>ResultSet.TYPE_SCROLL_SENSITIVE</code> 264751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return <code>true</code> if deletes are visible for the given result set type; 264851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>false</code> otherwise 264951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 265051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @since 1.2 265151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 265251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski boolean ownDeletesAreVisible(int type) throws SQLException; 265351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 265451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 265551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves whether a result set's own inserts are visible. 265651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 265751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @param type the <code>ResultSet</code> type; one of 265851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>ResultSet.TYPE_FORWARD_ONLY</code>, 265951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>ResultSet.TYPE_SCROLL_INSENSITIVE</code>, or 266051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>ResultSet.TYPE_SCROLL_SENSITIVE</code> 266151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return <code>true</code> if inserts are visible for the given result set type; 266251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>false</code> otherwise 266351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 266451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @since 1.2 266551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 266651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski boolean ownInsertsAreVisible(int type) throws SQLException; 266751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 266851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 266951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves whether updates made by others are visible. 267051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 267151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @param type the <code>ResultSet</code> type; one of 267251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>ResultSet.TYPE_FORWARD_ONLY</code>, 267351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>ResultSet.TYPE_SCROLL_INSENSITIVE</code>, or 267451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>ResultSet.TYPE_SCROLL_SENSITIVE</code> 267551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return <code>true</code> if updates made by others 267651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * are visible for the given result set type; 267751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>false</code> otherwise 267851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 267951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @since 1.2 268051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 268151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski boolean othersUpdatesAreVisible(int type) throws SQLException; 268251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 268351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 268451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves whether deletes made by others are visible. 268551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 268651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @param type the <code>ResultSet</code> type; one of 268751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>ResultSet.TYPE_FORWARD_ONLY</code>, 268851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>ResultSet.TYPE_SCROLL_INSENSITIVE</code>, or 268951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>ResultSet.TYPE_SCROLL_SENSITIVE</code> 269051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return <code>true</code> if deletes made by others 269151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * are visible for the given result set type; 269251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>false</code> otherwise 269351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 269451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @since 1.2 269551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 269651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski boolean othersDeletesAreVisible(int type) throws SQLException; 269751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 269851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 269951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves whether inserts made by others are visible. 270051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 270151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @param type the <code>ResultSet</code> type; one of 270251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>ResultSet.TYPE_FORWARD_ONLY</code>, 270351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>ResultSet.TYPE_SCROLL_INSENSITIVE</code>, or 270451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>ResultSet.TYPE_SCROLL_SENSITIVE</code> 270551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return <code>true</code> if inserts made by others 270651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * are visible for the given result set type; 270751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>false</code> otherwise 270851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 270951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @since 1.2 271051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 271151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski boolean othersInsertsAreVisible(int type) throws SQLException; 271251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 271351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 271451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves whether or not a visible row update can be detected by 271551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * calling the method <code>ResultSet.rowUpdated</code>. 271651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 271751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @param type the <code>ResultSet</code> type; one of 271851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>ResultSet.TYPE_FORWARD_ONLY</code>, 271951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>ResultSet.TYPE_SCROLL_INSENSITIVE</code>, or 272051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>ResultSet.TYPE_SCROLL_SENSITIVE</code> 272151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return <code>true</code> if changes are detected by the result set type; 272251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>false</code> otherwise 272351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 272451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @since 1.2 272551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 272651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski boolean updatesAreDetected(int type) throws SQLException; 272751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 272851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 272951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves whether or not a visible row delete can be detected by 273051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * calling the method <code>ResultSet.rowDeleted</code>. If the method 273151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>deletesAreDetected</code> returns <code>false</code>, it means that 273251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * deleted rows are removed from the result set. 273351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 273451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @param type the <code>ResultSet</code> type; one of 273551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>ResultSet.TYPE_FORWARD_ONLY</code>, 273651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>ResultSet.TYPE_SCROLL_INSENSITIVE</code>, or 273751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>ResultSet.TYPE_SCROLL_SENSITIVE</code> 273851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return <code>true</code> if deletes are detected by the given result set type; 273951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>false</code> otherwise 274051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 274151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @since 1.2 274251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 274351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski boolean deletesAreDetected(int type) throws SQLException; 274451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 274551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 274651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves whether or not a visible row insert can be detected 274751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * by calling the method <code>ResultSet.rowInserted</code>. 274851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 274951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @param type the <code>ResultSet</code> type; one of 275051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>ResultSet.TYPE_FORWARD_ONLY</code>, 275151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>ResultSet.TYPE_SCROLL_INSENSITIVE</code>, or 275251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>ResultSet.TYPE_SCROLL_SENSITIVE</code> 275351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return <code>true</code> if changes are detected by the specified result 275451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * set type; <code>false</code> otherwise 275551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 275651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @since 1.2 275751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 275851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski boolean insertsAreDetected(int type) throws SQLException; 275951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 276051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 276151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves whether this database supports batch updates. 276251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 276351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return <code>true</code> if this database supports batch upcates; 276451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>false</code> otherwise 276551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 276651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @since 1.2 276751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 276851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski boolean supportsBatchUpdates() throws SQLException; 276951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 277051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 277151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves a description of the user-defined types (UDTs) defined 277251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * in a particular schema. Schema-specific UDTs may have type 277351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>JAVA_OBJECT</code>, <code>STRUCT</code>, 277451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * or <code>DISTINCT</code>. 277551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 277651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <P>Only types matching the catalog, schema, type name and type 277751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * criteria are returned. They are ordered by <code>DATA_TYPE</code>, 277851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>TYPE_CAT</code>, <code>TYPE_SCHEM</code> and 277951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>TYPE_NAME</code>. The type name parameter may be a fully-qualified 278051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * name. In this case, the catalog and schemaPattern parameters are 278151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * ignored. 278251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 278351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <P>Each type description has the following columns: 278451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <OL> 278551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>TYPE_CAT</B> String => the type's catalog (may be <code>null</code>) 278651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>TYPE_SCHEM</B> String => type's schema (may be <code>null</code>) 278751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>TYPE_NAME</B> String => type name 278851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>CLASS_NAME</B> String => Java class name 278951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>DATA_TYPE</B> int => type value defined in java.sql.Types. 279051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * One of JAVA_OBJECT, STRUCT, or DISTINCT 279151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>REMARKS</B> String => explanatory comment on the type 279251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>BASE_TYPE</B> short => type code of the source type of a 279351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * DISTINCT type or the type that implements the user-generated 279451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * reference type of the SELF_REFERENCING_COLUMN of a structured 279551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * type as defined in java.sql.Types (<code>null</code> if DATA_TYPE is not 279651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * DISTINCT or not STRUCT with REFERENCE_GENERATION = USER_DEFINED) 279751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * </OL> 279851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 279951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <P><B>Note:</B> If the driver does not support UDTs, an empty 280051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * result set is returned. 280151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 280251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @param catalog a catalog name; must match the catalog name as it 280351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * is stored in the database; "" retrieves those without a catalog; 280451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>null</code> means that the catalog name should not be used to narrow 280551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * the search 280651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @param schemaPattern a schema pattern name; must match the schema name 280751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * as it is stored in the database; "" retrieves those without a schema; 280851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>null</code> means that the schema name should not be used to narrow 280951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * the search 281051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @param typeNamePattern a type name pattern; must match the type name 281151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * as it is stored in the database; may be a fully qualified name 281251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @param types a list of user-defined types (JAVA_OBJECT, 281351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * STRUCT, or DISTINCT) to include; <code>null</code> returns all types 281451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return <code>ResultSet</code> object in which each row describes a UDT 281551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 281651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @see #getSearchStringEscape 281751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @since 1.2 281851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 281951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski ResultSet getUDTs(String catalog, String schemaPattern, 282051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski String typeNamePattern, int[] types) 282151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski throws SQLException; 282251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 282351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 282451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves the connection that produced this metadata object. 282551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <P> 282651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return the connection that produced this metadata object 282751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 282851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @since 1.2 282951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 283051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski Connection getConnection() throws SQLException; 283151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 283251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski // ------------------- JDBC 3.0 ------------------------- 283351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 283451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 283551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves whether this database supports savepoints. 283651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 283751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return <code>true</code> if savepoints are supported; 283851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>false</code> otherwise 283951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 284051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @since 1.4 284151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 284251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski boolean supportsSavepoints() throws SQLException; 284351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 284451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 284551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves whether this database supports named parameters to callable 284651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * statements. 284751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 284851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return <code>true</code> if named parameters are supported; 284951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>false</code> otherwise 285051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 285151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @since 1.4 285251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 285351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski boolean supportsNamedParameters() throws SQLException; 285451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 285551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 285651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves whether it is possible to have multiple <code>ResultSet</code> objects 285751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * returned from a <code>CallableStatement</code> object 285851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * simultaneously. 285951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 286051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return <code>true</code> if a <code>CallableStatement</code> object 286151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * can return multiple <code>ResultSet</code> objects 286251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * simultaneously; <code>false</code> otherwise 286351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a datanase access error occurs 286451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @since 1.4 286551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 286651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski boolean supportsMultipleOpenResults() throws SQLException; 286751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 286851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 286951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves whether auto-generated keys can be retrieved after 287051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * a statement has been executed 287151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 287251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return <code>true</code> if auto-generated keys can be retrieved 287351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * after a statement has executed; <code>false</code> otherwise 287451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski *<p>If <code>true</code> is returned, the JDBC driver must support the 287551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * returning of auto-generated keys for at least SQL INSERT statements 287651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski *<p> 287751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 287851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @since 1.4 287951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 288051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski boolean supportsGetGeneratedKeys() throws SQLException; 288151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 288251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 288351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves a description of the user-defined type (UDT) hierarchies defined in a 288451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * particular schema in this database. Only the immediate super type/ 288551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * sub type relationship is modeled. 288651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <P> 288751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Only supertype information for UDTs matching the catalog, 288851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * schema, and type name is returned. The type name parameter 288951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * may be a fully-qualified name. When the UDT name supplied is a 289051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * fully-qualified name, the catalog and schemaPattern parameters are 289151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * ignored. 289251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <P> 289351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * If a UDT does not have a direct super type, it is not listed here. 289451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * A row of the <code>ResultSet</code> object returned by this method 289551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * describes the designated UDT and a direct supertype. A row has the following 289651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * columns: 289751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <OL> 289851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>TYPE_CAT</B> String => the UDT's catalog (may be <code>null</code>) 289951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>TYPE_SCHEM</B> String => UDT's schema (may be <code>null</code>) 290051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>TYPE_NAME</B> String => type name of the UDT 290151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>SUPERTYPE_CAT</B> String => the direct super type's catalog 290251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * (may be <code>null</code>) 290351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>SUPERTYPE_SCHEM</B> String => the direct super type's schema 290451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * (may be <code>null</code>) 290551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>SUPERTYPE_NAME</B> String => the direct super type's name 290651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * </OL> 290751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 290851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <P><B>Note:</B> If the driver does not support type hierarchies, an 290951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * empty result set is returned. 291051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 291151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @param catalog a catalog name; "" retrieves those without a catalog; 291251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>null</code> means drop catalog name from the selection criteria 291351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @param schemaPattern a schema name pattern; "" retrieves those 291451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * without a schema 291551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @param typeNamePattern a UDT name pattern; may be a fully-qualified 291651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * name 291751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return a <code>ResultSet</code> object in which a row gives information 291851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * about the designated UDT 291951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @throws SQLException if a database access error occurs 292051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @see #getSearchStringEscape 292151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @since 1.4 292251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 292351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski ResultSet getSuperTypes(String catalog, String schemaPattern, 292451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski String typeNamePattern) throws SQLException; 292551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 292651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 292751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves a description of the table hierarchies defined in a particular 292851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * schema in this database. 292951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 293051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <P>Only supertable information for tables matching the catalog, schema 293151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * and table name are returned. The table name parameter may be a fully- 293251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * qualified name, in which case, the catalog and schemaPattern parameters 293351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * are ignored. If a table does not have a super table, it is not listed here. 293451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Supertables have to be defined in the same catalog and schema as the 293551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * sub tables. Therefore, the type description does not need to include 293651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * this information for the supertable. 293751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 293851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <P>Each type description has the following columns: 293951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <OL> 294051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>TABLE_CAT</B> String => the type's catalog (may be <code>null</code>) 294151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>TABLE_SCHEM</B> String => type's schema (may be <code>null</code>) 294251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>TABLE_NAME</B> String => type name 294351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>SUPERTABLE_NAME</B> String => the direct super type's name 294451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * </OL> 294551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 294651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <P><B>Note:</B> If the driver does not support type hierarchies, an 294751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * empty result set is returned. 294851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 294951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @param catalog a catalog name; "" retrieves those without a catalog; 295051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>null</code> means drop catalog name from the selection criteria 295151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @param schemaPattern a schema name pattern; "" retrieves those 295251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * without a schema 295351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @param tableNamePattern a table name pattern; may be a fully-qualified 295451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * name 295551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return a <code>ResultSet</code> object in which each row is a type description 295651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @throws SQLException if a database access error occurs 295751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @see #getSearchStringEscape 295851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @since 1.4 295951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 296051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski ResultSet getSuperTables(String catalog, String schemaPattern, 296151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski String tableNamePattern) throws SQLException; 296251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 296351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 296451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Indicates that <code>NULL</code> values might not be allowed. 296551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <P> 296651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * A possible value for the column 296751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>NULLABLE</code> in the <code>ResultSet</code> object 296851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * returned by the method <code>getAttributes</code>. 296951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 297051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski short attributeNoNulls = 0; 297151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 297251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 297351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Indicates that <code>NULL</code> values are definitely allowed. 297451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <P> 297551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * A possible value for the column <code>NULLABLE</code> 297651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * in the <code>ResultSet</code> object 297751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * returned by the method <code>getAttributes</code>. 297851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 297951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski short attributeNullable = 1; 298051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 298151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 298251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Indicates that whether <code>NULL</code> values are allowed is not 298351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * known. 298451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <P> 298551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * A possible value for the column <code>NULLABLE</code> 298651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * in the <code>ResultSet</code> object 298751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * returned by the method <code>getAttributes</code>. 298851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 298951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski short attributeNullableUnknown = 2; 299051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 299151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 299251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves a description of the given attribute of the given type 299351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * for a user-defined type (UDT) that is available in the given schema 299451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * and catalog. 299551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <P> 299651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Descriptions are returned only for attributes of UDTs matching the 299751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * catalog, schema, type, and attribute name criteria. They are ordered by 299851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>TYPE_CAT</code>, <code>TYPE_SCHEM</code>, 299951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>TYPE_NAME</code> and <code>ORDINAL_POSITION</code>. This description 300051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * does not contain inherited attributes. 300151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <P> 300251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * The <code>ResultSet</code> object that is returned has the following 300351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * columns: 300451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <OL> 300551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>TYPE_CAT</B> String => type catalog (may be <code>null</code>) 300651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>TYPE_SCHEM</B> String => type schema (may be <code>null</code>) 300751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>TYPE_NAME</B> String => type name 300851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>ATTR_NAME</B> String => attribute name 300951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>DATA_TYPE</B> int => attribute type SQL type from java.sql.Types 301051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>ATTR_TYPE_NAME</B> String => Data source dependent type name. 301151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * For a UDT, the type name is fully qualified. For a REF, the type name is 301251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * fully qualified and represents the target type of the reference type. 301351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>ATTR_SIZE</B> int => column size. For char or date 301451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * types this is the maximum number of characters; for numeric or 301551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * decimal types this is precision. 301651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>DECIMAL_DIGITS</B> int => the number of fractional digits. Null is returned for data types where 301751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * DECIMAL_DIGITS is not applicable. 301851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>NUM_PREC_RADIX</B> int => Radix (typically either 10 or 2) 301951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>NULLABLE</B> int => whether NULL is allowed 302051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <UL> 302151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI> attributeNoNulls - might not allow NULL values 302251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI> attributeNullable - definitely allows NULL values 302351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI> attributeNullableUnknown - nullability unknown 302451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * </UL> 302551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>REMARKS</B> String => comment describing column (may be <code>null</code>) 302651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>ATTR_DEF</B> String => default value (may be <code>null</code>) 302751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>SQL_DATA_TYPE</B> int => unused 302851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>SQL_DATETIME_SUB</B> int => unused 302951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>CHAR_OCTET_LENGTH</B> int => for char types the 303051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * maximum number of bytes in the column 303151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>ORDINAL_POSITION</B> int => index of the attribute in the UDT 303251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * (starting at 1) 303351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>IS_NULLABLE</B> String => ISO rules are used to determine 303451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * the nullability for a attribute. 303551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <UL> 303651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI> YES --- if the attribute can include NULLs 303751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI> NO --- if the attribute cannot include NULLs 303851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI> empty string --- if the nullability for the 303951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * attribute is unknown 304051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * </UL> 304151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>SCOPE_CATALOG</B> String => catalog of table that is the 304251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * scope of a reference attribute (<code>null</code> if DATA_TYPE isn't REF) 304351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>SCOPE_SCHEMA</B> String => schema of table that is the 304451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * scope of a reference attribute (<code>null</code> if DATA_TYPE isn't REF) 304551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>SCOPE_TABLE</B> String => table name that is the scope of a 304651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * reference attribute (<code>null</code> if the DATA_TYPE isn't REF) 304751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>SOURCE_DATA_TYPE</B> short => source type of a distinct type or user-generated 304851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Ref type,SQL type from java.sql.Types (<code>null</code> if DATA_TYPE 304951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * isn't DISTINCT or user-generated REF) 305051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * </OL> 305151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @param catalog a catalog name; must match the catalog name as it 305251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * is stored in the database; "" retrieves those without a catalog; 305351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>null</code> means that the catalog name should not be used to narrow 305451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * the search 305551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @param schemaPattern a schema name pattern; must match the schema name 305651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * as it is stored in the database; "" retrieves those without a schema; 305751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>null</code> means that the schema name should not be used to narrow 305851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * the search 305951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @param typeNamePattern a type name pattern; must match the 306051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * type name as it is stored in the database 306151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @param attributeNamePattern an attribute name pattern; must match the attribute 306251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * name as it is declared in the database 306351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return a <code>ResultSet</code> object in which each row is an 306451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * attribute description 306551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 306651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @see #getSearchStringEscape 306751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @since 1.4 306851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 306951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski ResultSet getAttributes(String catalog, String schemaPattern, 307051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski String typeNamePattern, String attributeNamePattern) 307151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski throws SQLException; 307251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 307351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 307451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves whether this database supports the given result set holdability. 307551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 307651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @param holdability one of the following constants: 307751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>ResultSet.HOLD_CURSORS_OVER_COMMIT</code> or 307851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>ResultSet.CLOSE_CURSORS_AT_COMMIT<code> 307951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return <code>true</code> if so; <code>false</code> otherwise 308051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 308151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @see Connection 308251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @since 1.4 308351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 308451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski boolean supportsResultSetHoldability(int holdability) throws SQLException; 308551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 308651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 308751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves this database's default holdability for <code>ResultSet</code> 308851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * objects. 308951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 309051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return the default holdability; either 309151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>ResultSet.HOLD_CURSORS_OVER_COMMIT</code> or 309251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>ResultSet.CLOSE_CURSORS_AT_COMMIT</code> 309351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 309451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @since 1.4 309551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 309651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski int getResultSetHoldability() throws SQLException; 309751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 309851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 309951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves the major version number of the underlying database. 310051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 310151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return the underlying database's major version 310251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 310351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @since 1.4 310451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 310551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski int getDatabaseMajorVersion() throws SQLException; 310651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 310751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 310851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves the minor version number of the underlying database. 310951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 311051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return underlying database's minor version 311151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 311251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @since 1.4 311351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 311451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski int getDatabaseMinorVersion() throws SQLException; 311551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 311651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 311751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves the major JDBC version number for this 311851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * driver. 311951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 312051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return JDBC version major number 312151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 312251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @since 1.4 312351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 312451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski int getJDBCMajorVersion() throws SQLException; 312551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 312651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 312751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves the minor JDBC version number for this 312851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * driver. 312951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 313051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return JDBC version minor number 313151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 313251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @since 1.4 313351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 313451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski int getJDBCMinorVersion() throws SQLException; 313551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 313651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 313751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * A possible return value for the method 313851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>DatabaseMetaData.getSQLStateType</code> which is used to indicate 313951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * whether the value returned by the method 314051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>SQLException.getSQLState</code> is an 314151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * X/Open (now know as Open Group) SQL CLI SQLSTATE value. 314251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <P> 314351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @since 1.4 314451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 314551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski int sqlStateXOpen = 1; 314651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 314751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 314851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * A possible return value for the method 314951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>DatabaseMetaData.getSQLStateType</code> which is used to indicate 315051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * whether the value returned by the method 315151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>SQLException.getSQLState</code> is an SQLSTATE value. 315251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <P> 315351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @since 1.6 315451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 315551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski int sqlStateSQL = 2; 315651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 315751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 315851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * A possible return value for the method 315951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>DatabaseMetaData.getSQLStateType</code> which is used to indicate 316051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * whether the value returned by the method 316151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>SQLException.getSQLState</code> is an SQL99 SQLSTATE value. 316251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <P> 316351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <b>Note:</b>This constant remains only for compatibility reasons. Developers 316451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * should use the constant <code>sqlStateSQL</code> instead. 316551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 316651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @since 1.4 316751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 316851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski int sqlStateSQL99 = sqlStateSQL; 316951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 317051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 317151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Indicates whether the SQLSTATE returned by <code>SQLException.getSQLState</code> 317251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * is X/Open (now known as Open Group) SQL CLI or SQL:2003. 317351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return the type of SQLSTATE; one of: 317451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * sqlStateXOpen or 317551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * sqlStateSQL 317651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @throws SQLException if a database access error occurs 317751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @since 1.4 317851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 317951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski int getSQLStateType() throws SQLException; 318051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 318151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 318251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Indicates whether updates made to a LOB are made on a copy or directly 318351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * to the LOB. 318451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return <code>true</code> if updates are made to a copy of the LOB; 318551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>false</code> if updates are made directly to the LOB 318651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @throws SQLException if a database access error occurs 318751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @since 1.4 318851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 318951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski boolean locatorsUpdateCopy() throws SQLException; 319051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 319151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 319251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves whether this database supports statement pooling. 319351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 319451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return <code>true</code> if so; <code>false</code> otherwise 319551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @throws SQLException if a database access error occurs 319651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @since 1.4 319751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 319851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski boolean supportsStatementPooling() throws SQLException; 319951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 320051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski //------------------------- JDBC 4.0 ----------------------------------- 320151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 320251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 320351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Indicates whether or not this data source supports the SQL <code>ROWID</code> type, 320451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * and if so the lifetime for which a <code>RowId</code> object remains valid. 320551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <p> 320651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * The returned int values have the following relationship: 320751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <pre> 320851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * ROWID_UNSUPPORTED < ROWID_VALID_OTHER < ROWID_VALID_TRANSACTION 320951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * < ROWID_VALID_SESSION < ROWID_VALID_FOREVER 321051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * </pre> 321151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * so conditional logic such as 321251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <pre> 321351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * if (metadata.getRowIdLifetime() > DatabaseMetaData.ROWID_VALID_TRANSACTION) 321451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * </pre> 321551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * can be used. Valid Forever means valid across all Sessions, and valid for 321651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * a Session means valid across all its contained Transactions. 321751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 321851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return the status indicating the lifetime of a <code>RowId</code> 321951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @throws SQLException if a database access error occurs 322051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @since 1.6 322151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 322251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski RowIdLifetime getRowIdLifetime() throws SQLException; 322351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 322451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 322551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves the schema names available in this database. The results 322651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * are ordered by <code>TABLE_CATALOG</code> and 322751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>TABLE_SCHEM</code>. 322851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 322951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <P>The schema columns are: 323051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <OL> 323151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>TABLE_SCHEM</B> String => schema name 323251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>TABLE_CATALOG</B> String => catalog name (may be <code>null</code>) 323351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * </OL> 323451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 323551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 323651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @param catalog a catalog name; must match the catalog name as it is stored 323751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * in the database;"" retrieves those without a catalog; null means catalog 323851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * name should not be used to narrow down the search. 323951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @param schemaPattern a schema name; must match the schema name as it is 324051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * stored in the database; null means 324151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * schema name should not be used to narrow down the search. 324251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return a <code>ResultSet</code> object in which each row is a 324351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * schema description 324451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 324551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @see #getSearchStringEscape 324651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @since 1.6 324751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 324851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski ResultSet getSchemas(String catalog, String schemaPattern) throws SQLException; 324951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 325051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 325151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves whether this database supports invoking user-defined or vendor functions 325251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * using the stored procedure escape syntax. 325351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 325451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return <code>true</code> if so; <code>false</code> otherwise 325551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 325651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @since 1.6 325751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 325851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski boolean supportsStoredFunctionsUsingCallSyntax() throws SQLException; 325951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 326051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 326151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves whether a <code>SQLException</code> while autoCommit is <code>true</code> inidcates 326251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * that all open ResultSets are closed, even ones that are holdable. When a <code>SQLException</code> occurs while 326351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * autocommit is <code>true</code>, it is vendor specific whether the JDBC driver responds with a commit operation, a 326451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * rollback operation, or by doing neither a commit nor a rollback. A potential result of this difference 326551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * is in whether or not holdable ResultSets are closed. 326651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 326751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return <code>true</code> if so; <code>false</code> otherwise 326851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 326951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @since 1.6 327051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 327151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski boolean autoCommitFailureClosesAllResultSets() throws SQLException; 327251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 327351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves a list of the client info properties 327451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * that the driver supports. The result set contains the following columns 327551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <p> 327651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <ol> 327751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <li><b>NAME</b> String=> The name of the client info property<br> 327851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <li><b>MAX_LEN</b> int=> The maximum length of the value for the property<br> 327951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <li><b>DEFAULT_VALUE</b> String=> The default value of the property<br> 328051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <li><b>DESCRIPTION</b> String=> A description of the property. This will typically 328151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * contain information as to where this property is 328251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * stored in the database. 328351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * </ol> 328451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <p> 328551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * The <code>ResultSet</code> is sorted by the NAME column 328651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <p> 328751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return A <code>ResultSet</code> object; each row is a supported client info 328851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * property 328951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <p> 329051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 329151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <p> 329251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @since 1.6 329351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 329451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski ResultSet getClientInfoProperties() 329551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski throws SQLException; 329651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 329751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 329851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves a description of the system and user functions available 329951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * in the given catalog. 330051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <P> 330151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Only system and user function descriptions matching the schema and 330251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * function name criteria are returned. They are ordered by 330351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>FUNCTION_CAT</code>, <code>FUNCTION_SCHEM</code>, 330451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>FUNCTION_NAME</code> and 330551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>SPECIFIC_ NAME</code>. 330651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 330751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <P>Each function description has the the following columns: 330851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <OL> 330951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>FUNCTION_CAT</B> String => function catalog (may be <code>null</code>) 331051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>FUNCTION_SCHEM</B> String => function schema (may be <code>null</code>) 331151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>FUNCTION_NAME</B> String => function name. This is the name 331251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * used to invoke the function 331351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>REMARKS</B> String => explanatory comment on the function 331451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>FUNCTION_TYPE</B> short => kind of function: 331551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <UL> 331651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI>functionResultUnknown - Cannot determine if a return value 331751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * or table will be returned 331851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI> functionNoTable- Does not return a table 331951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI> functionReturnsTable - Returns a table 332051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * </UL> 332151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>SPECIFIC_NAME</B> String => the name which uniquely identifies 332251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * this function within its schema. This is a user specified, or DBMS 332351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * generated, name that may be different then the <code>FUNCTION_NAME</code> 332451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * for example with overload functions 332551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * </OL> 332651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <p> 332751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * A user may not have permission to execute any of the functions that are 332851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * returned by <code>getFunctions</code> 332951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 333051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @param catalog a catalog name; must match the catalog name as it 333151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * is stored in the database; "" retrieves those without a catalog; 333251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>null</code> means that the catalog name should not be used to narrow 333351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * the search 333451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @param schemaPattern a schema name pattern; must match the schema name 333551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * as it is stored in the database; "" retrieves those without a schema; 333651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>null</code> means that the schema name should not be used to narrow 333751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * the search 333851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @param functionNamePattern a function name pattern; must match the 333951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * function name as it is stored in the database 334051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return <code>ResultSet</code> - each row is a function description 334151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 334251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @see #getSearchStringEscape 334351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @since 1.6 334451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 334551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski ResultSet getFunctions(String catalog, String schemaPattern, 334651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski String functionNamePattern) throws SQLException; 334751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 334851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Retrieves a description of the given catalog's system or user 334951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * function parameters and return type. 335051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 335151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <P>Only descriptions matching the schema, function and 335251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * parameter name criteria are returned. They are ordered by 335351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>FUNCTION_CAT</code>, <code>FUNCTION_SCHEM</code>, 335451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>FUNCTION_NAME</code> and 335551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>SPECIFIC_ NAME</code>. Within this, the return value, 335651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * if any, is first. Next are the parameter descriptions in call 335751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * order. The column descriptions follow in column number order. 335851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 335951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <P>Each row in the <code>ResultSet</code> 336051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * is a parameter description, column description or 336151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * return type description with the following fields: 336251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <OL> 336351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>FUNCTION_CAT</B> String => function catalog (may be <code>null</code>) 336451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>FUNCTION_SCHEM</B> String => function schema (may be <code>null</code>) 336551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>FUNCTION_NAME</B> String => function name. This is the name 336651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * used to invoke the function 336751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>COLUMN_NAME</B> String => column/parameter name 336851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>COLUMN_TYPE</B> Short => kind of column/parameter: 336951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <UL> 337051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI> functionColumnUnknown - nobody knows 337151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI> functionColumnIn - IN parameter 337251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI> functionColumnInOut - INOUT parameter 337351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI> functionColumnOut - OUT parameter 337451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI> functionColumnReturn - function return value 337551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI> functionColumnResult - Indicates that the parameter or column 337651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * is a column in the <code>ResultSet</code> 337751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * </UL> 337851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>DATA_TYPE</B> int => SQL type from java.sql.Types 337951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>TYPE_NAME</B> String => SQL type name, for a UDT type the 338051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * type name is fully qualified 338151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>PRECISION</B> int => precision 338251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>LENGTH</B> int => length in bytes of data 338351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>SCALE</B> short => scale - null is returned for data types where 338451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * SCALE is not applicable. 338551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>RADIX</B> short => radix 338651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>NULLABLE</B> short => can it contain NULL. 338751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <UL> 338851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI> functionNoNulls - does not allow NULL values 338951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI> functionNullable - allows NULL values 339051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI> functionNullableUnknown - nullability unknown 339151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * </UL> 339251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>REMARKS</B> String => comment describing column/parameter 339351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>CHAR_OCTET_LENGTH</B> int => the maximum length of binary 339451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * and character based parameters or columns. For any other datatype the returned value 339551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * is a NULL 339651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>ORDINAL_POSITION</B> int => the ordinal position, starting 339751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * from 1, for the input and output parameters. A value of 0 339851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * is returned if this row describes the function's return value. 339951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * For result set columns, it is the 340051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * ordinal position of the column in the result set starting from 1. 340151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>IS_NULLABLE</B> String => ISO rules are used to determine 340251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * the nullability for a parameter or column. 340351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <UL> 340451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI> YES --- if the parameter or column can include NULLs 340551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI> NO --- if the parameter or column cannot include NULLs 340651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI> empty string --- if the nullability for the 340751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * parameter or column is unknown 340851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * </UL> 340951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <LI><B>SPECIFIC_NAME</B> String => the name which uniquely identifies 341051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * this function within its schema. This is a user specified, or DBMS 341151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * generated, name that may be different then the <code>FUNCTION_NAME</code> 341251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * for example with overload functions 341351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * </OL> 341451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 341551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <p>The PRECISION column represents the specified column size for the given 341651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * parameter or column. 341751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * For numeric data, this is the maximum precision. For character data, this is the length in characters. 341851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * For datetime datatypes, this is the length in characters of the String representation (assuming the 341951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * maximum allowed precision of the fractional seconds component). For binary data, this is the length in bytes. For the ROWID datatype, 342051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * this is the length in bytes. Null is returned for data types where the 342151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * column size is not applicable. 342251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @param catalog a catalog name; must match the catalog name as it 342351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * is stored in the database; "" retrieves those without a catalog; 342451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>null</code> means that the catalog name should not be used to narrow 342551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * the search 342651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @param schemaPattern a schema name pattern; must match the schema name 342751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * as it is stored in the database; "" retrieves those without a schema; 342851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>null</code> means that the schema name should not be used to narrow 342951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * the search 343051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @param functionNamePattern a procedure name pattern; must match the 343151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * function name as it is stored in the database 343251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @param columnNamePattern a parameter name pattern; must match the 343351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * parameter or column name as it is stored in the database 343451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @return <code>ResultSet</code> - each row describes a 343551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * user function parameter, column or return type 343651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * 343751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @exception SQLException if a database access error occurs 343851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @see #getSearchStringEscape 343951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @since 1.6 344051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 344151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski ResultSet getFunctionColumns(String catalog, 344251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski String schemaPattern, 344351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski String functionNamePattern, 344451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski String columnNamePattern) throws SQLException; 344551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 344651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 344751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 344851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Indicates that type of the parameter or column is unknown. 344951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <P> 345051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * A possible value for the column 345151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>COLUMN_TYPE</code> 345251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * in the <code>ResultSet</code> 345351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * returned by the method <code>getFunctionColumns</code>. 345451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 345551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski int functionColumnUnknown = 0; 345651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 345751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 345851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Indicates that the parameter or column is an IN parameter. 345951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <P> 346051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * A possible value for the column 346151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>COLUMN_TYPE</code> 346251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * in the <code>ResultSet</code> 346351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * returned by the method <code>getFunctionColumns</code>. 346451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @since 1.6 346551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 346651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski int functionColumnIn = 1; 346751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 346851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 346951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Indicates that the parameter or column is an INOUT parameter. 347051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <P> 347151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * A possible value for the column 347251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>COLUMN_TYPE</code> 347351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * in the <code>ResultSet</code> 347451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * returned by the method <code>getFunctionColumns</code>. 347551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @since 1.6 347651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 347751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski int functionColumnInOut = 2; 347851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 347951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 348051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Indicates that the parameter or column is an OUT parameter. 348151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <P> 348251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * A possible value for the column 348351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>COLUMN_TYPE</code> 348451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * in the <code>ResultSet</code> 348551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * returned by the method <code>getFunctionColumns</code>. 348651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @since 1.6 348751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 348851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski int functionColumnOut = 3; 348951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 349051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Indicates that the parameter or column is a return value. 349151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <P> 349251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * A possible value for the column 349351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>COLUMN_TYPE</code> 349451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * in the <code>ResultSet</code> 349551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * returned by the method <code>getFunctionColumns</code>. 349651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @since 1.6 349751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 349851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski int functionReturn = 4; 349951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 350051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 350151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Indicates that the parameter or column is a column in a result set. 350251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <P> 350351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * A possible value for the column 350451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>COLUMN_TYPE</code> 350551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * in the <code>ResultSet</code> 350651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * returned by the method <code>getFunctionColumns</code>. 350751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @since 1.6 350851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 350951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski int functionColumnResult = 5; 351051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 351151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 351251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 351351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Indicates that <code>NULL</code> values are not allowed. 351451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <P> 351551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * A possible value for the column 351651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>NULLABLE</code> 351751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * in the <code>ResultSet</code> object 351851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * returned by the method <code>getFunctionColumns</code>. 351951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @since 1.6 352051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 352151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski int functionNoNulls = 0; 352251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 352351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 352451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Indicates that <code>NULL</code> values are allowed. 352551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <P> 352651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * A possible value for the column 352751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>NULLABLE</code> 352851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * in the <code>ResultSet</code> object 352951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * returned by the method <code>getFunctionColumns</code>. 353051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @since 1.6 353151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 353251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski int functionNullable = 1; 353351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 353451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 353551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Indicates that whether <code>NULL</code> values are allowed 353651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * is unknown. 353751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <P> 353851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * A possible value for the column 353951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>NULLABLE</code> 354051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * in the <code>ResultSet</code> object 354151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * returned by the method <code>getFunctionColumns</code>. 354251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @since 1.6 354351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 354451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski int functionNullableUnknown = 2; 354551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 354651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 354751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Indicates that it is not known whether the function returns 354851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * a result or a table. 354951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <P> 355051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * A possible value for column <code>FUNCTION_TYPE</code> in the 355151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>ResultSet</code> object returned by the method 355251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>getFunctions</code>. 355351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @since 1.6 355451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 355551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski int functionResultUnknown = 0; 355651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 355751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 355851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Indicates that the function does not return a table. 355951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <P> 356051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * A possible value for column <code>FUNCTION_TYPE</code> in the 356151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>ResultSet</code> object returned by the method 356251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>getFunctions</code>. 356351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @since 1.6 356451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 356551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski int functionNoTable = 1; 356651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 356751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski /** 356851b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * Indicates that the function returns a table. 356951b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <P> 357051b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * A possible value for column <code>FUNCTION_TYPE</code> in the 357151b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>ResultSet</code> object returned by the method 357251b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * <code>getFunctions</code>. 357351b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski * @since 1.6 357451b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski */ 357551b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski int functionReturnsTable = 2; 357651b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski 357751b1b6997fd3f980076b8081f7f1165ccc2a4008Piotr Jastrzebski} 3578