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