/[classpath]/classpath/java/sql/DatabaseMetaData.java
ViewVC logotype

Diff of /classpath/java/sql/DatabaseMetaData.java

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.9 by mark, Mon May 6 16:19:20 2002 UTC revision 1.10 by bryce, Fri Jun 21 05:34:12 2002 UTC
# Line 1  Line 1 
1  /* DatabaseMetaData.java -- Information about the database itself.  /* DatabaseMetaData.java -- Information about the database itself.
2     Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc.     Copyright (C) 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
3    
4  This file is part of GNU Classpath.  This file is part of GNU Classpath.
5    
# Line 35  this exception to your version of the li Line 35  this exception to your version of the li
35  obligated to do so.  If you do not wish to do so, delete this  obligated to do so.  If you do not wish to do so, delete this
36  exception statement from your version. */  exception statement from your version. */
37    
   
38  package java.sql;  package java.sql;
39    
40  /**  public interface DatabaseMetaData
   * This interface provides a mechanism for obtaining information about  
   * the database itself, as opposed to data in it.  
   *  
   * @author Aaron M. Renn (arenn@urbanophile.com)  
   */  
 public interface DatabaseMetaData  
41  {  {
42      /**
43  /**     * It is unknown whether or not the procedure returns a result.
44    * The best row may or may not be a pseudo-column.     */
45    */    public static final int procedureResultUnknown = 0;
46  public static final int bestRowUnknown = 0;  
47      /**
48  /**     * The procedure does not return a result.
49    * The best row identifier is not a pseudo-column.     */
50    */    public static final int procedureNoResult = 1;
51  public static final int bestRowNotPseudo = 1;  
52      /**
53  /**     * The procedure returns a result.
54    * The best row identifier is a pseudo-column.     */
55    */    public static final int procedureReturnsResult = 2;
56  public static final int bestRowPseudo = 2;  
57      /**
58  /**     * The column type is unknown.
59    * The best row's scope is only guaranteed to be valid so long as the     */
60    * row is actually being used.    public static final int procedureColumnUnknown = 0;
61    */  
62  public static final int bestRowTemporary = 0;    /**
63       * The column type is input.
64  /**     */
65    * The best row identifier is valid to the end of the transaction.    public static final int procedureColumnIn = 1;
66    */  
67  public static final int bestRowTransaction = 1;    /**
68       * The column type is input/output.
69  /**     */
70    * The best row identifier is valid to the end of the session.    public static final int procedureColumnInOut = 2;
71    */  
72  public static final int bestRowSession = 2;    /**
73       * The column type is output
74  /**     */
75    * It is unknown whether or not the procedure returns a result.    public static final int procedureColumnOut = 4;
76    */  
77  public static final int procedureResultUnknown = 0;    /**
78       * The column is used for return values.
79  /**     */
80    * The procedure does not return a result.    public static final int procedureColumnReturn = 5;
81    */  
82  public static final int procedureNoResult = 1;    /**
83       * The column is used for storing results
84  /**     */
85    * The procedure returns a result.    public static final int procedureColumnResult = 3;
86    */  
87  public static final int procedureReturnsResult = 2;    /**
88       * NULL values are not allowed.
89  /**     */
90    * The column type is unknown.    public static final int procedureNoNulls = 0;
91    */  
92  public static final int procedureColumnUnknown = 0;    /**
93       * NULL values are allowed.
94  /**     */
95    * The column type is input.    public static final int procedureNullable = 1;
96    */  
97  public static final int procedureColumnIn = 1;    /**
98       * It is unknown whether or not NULL values are allowed.
99  /**     */
100    * The column type is input/output.    public static final int procedureNullableUnknown = 2;
101    */  
102  public static final int procedureColumnInOut = 2;    /**
103       * The column does not allow NULL
104  /**     */
105    * The column type is output    public static final int columnNoNulls = 0;
106    */  
107  public static final int procedureColumnOut = 4;    /**
108       * The column does allow NULL
109  /**     */
110    * The column is used for return values.    public static final int columnNullable = 1;
111    */  
112  public static final int procedureColumnReturn = 5;    /**
113       * It is unknown whether or not the column allows NULL
114  /**     */
115    * The column is used for storing results    public static final int columnNullableUnknown = 2;
116    */  
117  public static final int procedureColumnResult = 3;    /**
118       * The best row's scope is only guaranteed to be valid so long as the
119  /**     * row is actually being used.
120    * NULL values are not allowed.     */
121    */    public static final int bestRowTemporary = 0;
122  public static final int procedureNoNulls = 0;  
123      /**
124  /**     * The best row identifier is valid to the end of the transaction.
125    * NULL values are allowed.     */
126    */    public static final int bestRowTransaction = 1;
127  public static final int procedureNullable = 1;  
128      /**
129  /**     * The best row identifier is valid to the end of the session.
130    * It is unknown whether or not NULL values are allowed.     */
131    */    public static final int bestRowSession = 2;
132  public static final int procedureNullableUnknown = 2;  
133      /**
134  /**     * The best row may or may not be a pseudo-column.
135    * The column does not allow NULL     */
136    */    public static final int bestRowUnknown = 0;
137  public static final int columnNoNulls = 0;  
138      /**
139  /**     * The best row identifier is not a pseudo-column.
140    * The column does allow NULL     */
141    */    public static final int bestRowNotPseudo = 1;
142  public static final int columnNullable = 1;  
143      /**
144  /**     * The best row identifier is a pseudo-column.
145    * It is unknown whether or not the column allows NULL     */
146    */    public static final int bestRowPseudo = 2;
147  public static final int columnNullableUnknown = 2;  
148      /**
149  /**     * It is unknown whether or not the version column is a pseudo-column.
150    * It is unknown whether or not the version column is a pseudo-column.     */
151    */    public static final int versionColumnUnknown = 0;
152  public static final int versionColumnUnknown = 0;  
153      /**
154  /**     * The version column is not a pseudo-column
155    * The version column is not a pseudo-column     */
156    */    public static final int versionColumnNotPseudo = 1;
157  public static final int versionColumnNotPseudo = 1;  
158      /**
159  /**     * The version column is a pseudo-column
160    * The version column is a pseudo-column     */
161    */    public static final int versionColumnPseudo = 2;
162  public static final int versionColumnPseudo = 2;  
163      /**
164  /**     * Foreign key changes are cascaded in updates or deletes.
165    * Foreign key changes are cascaded in updates or deletes.     */
166    */    public static final int importedKeyCascade = 0;
167  public static final int importedKeyCascade = 0;  
168      /**
169  /**     * Column may not be updated or deleted in use as a foreign key.
170    * Column may not be updated or deleted in use as a foreign key.     */
171    */    public static final int importedKeyRestrict = 1;
172  public static final int importedKeyRestrict = 1;  
173      /**
174  /**     * When primary key is updated or deleted, the foreign key is set to NULL.
175    * When primary key is updated or deleted, the foreign key is set to NULL.     */
176    */    public static final int importedKeySetNull = 2;
177  public static final int importedKeySetNull = 2;  
178      /**
179  /**     * If the primary key is a foreign key, it cannot be udpated or deleted.
180    * If the primary key is a foreign key, it cannot be udpated or deleted.     */
181    */    public static final int importedKeyNoAction = 3;
182  public static final int importedKeyNoAction = 3;  
183      /**
184  /**     * If the primary key is updated or deleted, the foreign key is set to
185    * If the primary key is updated or deleted, the foreign key is set to     * a default value.
186    * a default value.     */
187    */    public static final int importedKeySetDefault = 4;
188  public static final int importedKeySetDefault = 4;  
189      /**
190  /**     * Wish I knew what this meant.
191    * Wish I knew what this meant.     */
192    */    public static final int importedKeyInitiallyDeferred = 5;
193  public static final int importedKeyInitiallyDeferred = 5;  
194      /**
195  /**     * Wish I knew what this meant.
196    * Wish I knew what this meant.     */
197    */    public static final int importedKeyInitiallyImmediate = 6;
198  public static final int importedKeyInitiallyImmediate = 6;  
199      /**
200  /**     * Wish I knew what this meant.
201    * Wish I knew what this meant.     */
202    */    public static final int importedKeyNotDeferrable = 7;
203  public static final int importedKeyNotDeferrable = 7;  
204      /**
205  /**     * A NULL value is not allowed for this data type.
206    * A NULL value is not allowed for this data type.     */
207    */    public static final int typeNoNulls = 0;
208  public static final int typeNoNulls = 0;  
209      /**
210  /**     * A NULL value is allowed for this data type.
211    * A NULL value is allowed for this data type.     */
212    */    public static final int typeNullable = 1;
213  public static final int typeNullable = 1;  
214      /**
215  /**     * It is unknown whether or not NULL values are allowed for this data type.
216    * It is unknown whether or not NULL values are allowed for this data type.     */
217    */    public static final int typeNullableUnknown = 2;
218  public static final int typeNullableUnknown = 2;  
219      /**
220  /**     * Where clauses are not supported for this type.
221    * Where clauses are not supported for this type.     */
222    */    public static final int typePredNone = 0;
223  public static final int typePredNone = 0;  
224      /**
225  /**     * Only "WHERE..LIKE" style WHERE clauses are allowed on this data type.
226    * Only "WHERE..LIKE" style WHERE clauses are allowed on this data type.     */
227    */    public static final int typePredChar = 1;
228  public static final int typePredChar = 1;  
229      /**
230  /**     * All WHERE clauses except "WHERE..LIKE" style are allowed on this data type.
231    * All WHERE clauses except "WHERE..LIKE" style are allowed on this data type.     */
232    */    public static final int typePredBasic = 2;
233  public static final int typePredBasic = 2;  
234      /**
235  /**     * Any type of WHERE clause is allowed for this data type.
236    * Any type of WHERE clause is allowed for this data type.     */
237    */    public static final int typeSearchable = 3;
238  public static final int typeSearchable = 3;  
239      /**
240  /**     * This column contains table statistics.
241    * This column contains table statistics.     */
242    */    public static final short tableIndexStatistic = 0;
243  public static final short tableIndexStatistic = 0;  
244      /**
245  /**     * This table index is clustered.
246    * This table index is clustered.     */
247    */    public static final short tableIndexClustered = 1;
248  public static final short tableIndexClustered = 1;  
249      /**
250  /**     * This table index is hashed.
251    * This table index is hashed.     */
252    */    public static final short tableIndexHashed = 2;
253  public static final short tableIndexHashed = 2;  
254      /**
255  /**     * This table index is of another type.
256    * This table index is of another type.     */
257    */    public static final short tableIndexOther = 3;
258  public static final short tableIndexOther = 3;  
259      public static final short attributeNoNulls = 0;
260  /*************************************************************************/  
261      public static final short attributeNullable = 1;
262  /**  
263    * This method tests whether or not all the procedures returned by    public static final short attributeNullableUnknown = 2;
264    * the <code>getProcedures</code> method can be called by this user.  
265    *    public static final int sqlStateXOpen = 1;
266    * @return <code>true</code> if all the procedures can be called,  
267    * <code>false</code> otherwise.    public static final int sqlStateSQL99 = 2;
268    *  
269    * @exception SQLException If an error occurs.    /**
270    */     * This method tests whether or not all the procedures returned by
271  public abstract boolean     * the <code>getProcedures</code> method can be called by this user.
272  allProceduresAreCallable() throws SQLException;     *
273       * @return <code>true</code> if all the procedures can be called,
274  /*************************************************************************/     * <code>false</code> otherwise.
275       * @exception SQLException If an error occurs.
276  /**     */
277    * This method tests whether or not all the table returned by the    public boolean allProceduresAreCallable() throws SQLException;
278    * <code>getTables</code> method can be selected by this user.  
279    *    /**
280    * @return <code>true</code> if all the procedures can be called,     * This method tests whether or not all the table returned by the
281    * <code>false</code> otherwise.     * <code>getTables</code> method can be selected by this user.
282    *     *
283    * @exception SQLException If an error occurs.     * @return <code>true</code> if all the procedures can be called,
284    */     * <code>false</code> otherwise.
285  public abstract boolean     *
286  allTablesAreSelectable() throws SQLException;     * @exception SQLException If an error occurs.
287       */
288  /*************************************************************************/    public boolean allTablesAreSelectable() throws SQLException;
289    
290  /**    /**
291    * This method returns the URL for this database.     * This method returns the URL for this database.
292    *     *
293    * @return The URL string for this database, or <code>null</code> if it     * @return The URL string for this database, or <code>null</code> if it
294    * is not known.     *         is not known.
295    *     * @exception SQLException If an error occurs.
296    * @exception SQLException If an error occurs.     */
297    */    public String getURL() throws SQLException;
298  public abstract String  
299  getURL() throws SQLException;    /**
300       * This method returns the database username for this connection.
301  /*************************************************************************/     *
302       * @return The database username.
303  /**     * @exception SQLException If an error occurs.
304    * This method returns the database username for this connection.     */
305    *    public String getUserName() throws SQLException;
306    * @return The database username.  
307    *    /**
308    * @exception SQLException If an error occurs.     * This method tests whether or not the database is in read only mode.
309    */     *
310  public abstract String     * @return <code>true</code> if the database is in read only mode,
311  getUserName() throws SQLException;     *         <code>false</code> otherwise.
312       * @exception SQLException If an error occurs.
313  /*************************************************************************/     */
314      public boolean isReadOnly() throws SQLException;
315  /**  
316    * This method tests whether or not the database is in read only mode.    /**
317    *     * This method tests whether or not NULL's sort as high values.
318    * @return <code>true</code> if the database is in read only mode,     *
319    * <code>false</code> otherwise.     * @return <code>true</code> if NULL's sort as high values, <code>false</code>
320    *     *         otherwise.
321    * @exception SQLException If an error occurs.     * @exception SQLException If an error occurs.
322    */     */
323  public abstract boolean    public boolean nullsAreSortedHigh() throws SQLException;
324  isReadOnly() throws SQLException;  
325      /**
326  /*************************************************************************/     * This method tests whether or not NULL's sort as low values.
327       *
328  /**     * @return <code>true</code> if NULL's sort as low values, <code>false</code>
329    * This method tests whether or not NULL's sort as high values.     * otherwise.
330    *     * @exception SQLException If an error occurs.
331    * @return <code>true</code> if NULL's sort as high values, <code>false</code>     */
332    * otherwise.    public boolean nullsAreSortedLow() throws SQLException;
333    *  
334    * @exception SQLException If an error occurs.    /**
335    */     * This method tests whether or not NULL's sort as high values.
336  public abstract boolean     *
337  nullsAreSortedHigh() throws SQLException;     * @return <code>true</code> if NULL's sort as high values, <code>false</code>
338       * otherwise.
339  /*************************************************************************/     * @exception SQLException If an error occurs.
340       */
341  /**    public boolean nullsAreSortedAtStart() throws SQLException;
342    * This method tests whether or not NULL's sort as low values.  
343    *    /**
344    * @return <code>true</code> if NULL's sort as low values, <code>false</code>     * This method test whether or not NULL's are sorted to the end
345    * otherwise.     * of the list regardless of ascending or descending sort order.
346    *     *
347    * @exception SQLException If an error occurs.     * @return <code>true</code> if NULL's always sort to the end,
348    */     * <code>false</code> otherwise.
349  public abstract boolean     * @exception SQLException If an error occurs.
350  nullsAreSortedLow() throws SQLException;     */
351      public boolean nullsAreSortedAtEnd() throws SQLException;
352  /*************************************************************************/  
353      /**
354  /**     * This method returns the name of the database product.
355    * This method test whether or not NULL's are sorted to the beginning     *
356    * of the list regardless of ascending or descending sort order.     * @return The database product.
357    *     * @exception SQLException If an error occurs.
358    * @return <code>true</code> if NULL's always sort to the beginning,     */
359    * <code>false</code> otherwise.    public String getDatabaseProductName() throws SQLException;
360    *  
361    * @exception SQLException If an error occurs.    /**
362    */     * This method returns the version of the database product.
363  public abstract boolean     *
364  nullsAreSortedAtStart() throws SQLException;     * @return The version of the database product.
365       * @exception SQLException If an error occurs.
366  /*************************************************************************/     */
367      public String getDatabaseProductVersion() throws SQLException;
368  /**  
369    * This method test whether or not NULL's are sorted to the end    /**
370    * of the list regardless of ascending or descending sort order.     * This method returns the name of the JDBC driver.
371    *     *
372    * @return <code>true</code> if NULL's always sort to the end,     * @return The name of the JDBC driver.
373    * <code>false</code> otherwise.     * @exception SQLException If an error occurs.
374    *     */
375    * @exception SQLException If an error occurs.    public String getDriverName() throws SQLException;
376    */  
377  public abstract boolean    /**
378  nullsAreSortedAtEnd() throws SQLException;     * This method returns the version of the JDBC driver.
379       *
380  /*************************************************************************/     * @return The version of the JDBC driver.
381       * @exception SQLException If an error occurs.
382  /**     */
383    * This method returns the name of the database product.    public String getDriverVersion() throws SQLException;
384    *  
385    * @return The database product.    /**
386    *     * This method returns the major version number of the JDBC driver.
387    * @exception SQLException If an error occurs.     *
388    */     * @return The major version number of the JDBC driver.
389  public abstract String     */
390  getDatabaseProductName() throws SQLException;    public int getDriverMajorVersion();
391    
392  /*************************************************************************/    /**
393       * This method returns the minor version number of the JDBC driver.
394  /**     *
395    * This method returns the version of the database product.     * @return The minor version number of the JDBC driver.
396    *     */
397    * @return The version of the database product.    public int getDriverMinorVersion();
398    *  
399    * @exception SQLException If an error occurs.    /**
400    */     * This method tests whether or not the database uses local files to
401  public abstract String     * store tables.
402  getDatabaseProductVersion() throws SQLException;     *
403       * @return <code>true</code> if the database uses local files,
404  /*************************************************************************/     * <code>false</code> otherwise.
405       *
406  /**     * @exception SQLException If an error occurs.
407    * This method returns the name of the JDBC driver.     */
408    *    public boolean usesLocalFiles() throws SQLException;
409    * @return The name of the JDBC driver.  
410    *    /**
411    * @exception SQLException If an error occurs.     * This method tests whether or not the database uses a separate file for
412    */     * each table.
413  public abstract String     *
414  getDriverName() throws SQLException;     * @return <code>true</code> if the database uses a separate file for each
415       * table </code>false</code> otherwise.
416  /*************************************************************************/     *
417       * @exception SQLException If an error occurs.
418  /**     */
419    * This method returns the version of the JDBC driver.    public boolean usesLocalFilePerTable() throws SQLException;
420    *  
421    * @return The version of the JDBC driver.    /**
422    *     * This method tests whether or not the database supports identifiers
423    * @exception SQLException If an error occurs.     * with mixed case.
424    */     *
425  public abstract String     * @return <code>true</code> if the database supports mixed case identifiers,
426  getDriverVersion() throws SQLException;     * <code>false</code> otherwise.
427       *
428  /*************************************************************************/     * @exception SQLException If an error occurs.
429       */
430  /**    public boolean supportsMixedCaseIdentifiers() throws SQLException;
431    * This method returns the major version number of the JDBC driver.  
432    *    /**
433    * @return The major version number of the JDBC driver.     * This method tests whether or not the database treats mixed case
434    */     * identifiers as all upper case.
435  public abstract int     *
436  getDriverMajorVersion();     * @exception <code>true</code> if the database treats all identifiers as
437       *            upper case, <code>false</code> otherwise.
438  /*************************************************************************/     * @exception SQLException If an error occurs.
439       */
440  /**    public boolean storesUpperCaseIdentifiers() throws SQLException;
441    * This method returns the minor version number of the JDBC driver.  
442    *    /**
443    * @return The minor version number of the JDBC driver.     * This method tests whether or not the database treats mixed case
444    */     * identifiers as all lower case.
445  public abstract int     *
446  getDriverMinorVersion();     * @exception <code>true</code> if the database treats all identifiers as
447       *            lower case, <code>false</code> otherwise.
448  /*************************************************************************/     * @exception SQLException If an error occurs.
449       */
450  /**    public boolean storesLowerCaseIdentifiers() throws SQLException;
451    * This method tests whether or not the database uses local files to  
452    * store tables.    /**
453    *     * This method tests whether or not the database stores mixed case
454    * @return <code>true</code> if the database uses local files,     * identifers even if it treats them as case insensitive.
455    * <code>false</code> otherwise.     *
456    *     * @return <code>true</code> if the database stores mixed case identifiers,
457    * @exception SQLException If an error occurs.     *         <code>false</code> otherwise.
458    */     * @exception SQLException If an error occurs.
459  public abstract boolean     */
460  usesLocalFiles() throws SQLException;    public boolean storesMixedCaseIdentifiers() throws SQLException;
461    
462  /*************************************************************************/    /**
463       * This method tests whether or not the database supports quoted identifiers
464  /**     * with mixed case.
465    * This method tests whether or not the database uses a separate file for     *
466    * each table.     * @return <code>true</code> if the database supports mixed case quoted
467    *     *         identifiers, <code>false</code> otherwise.
468    * @return <code>true</code> if the database uses a separate file for each     * @exception SQLException If an error occurs.
469    * table </code>false</code> otherwise.     */
470    *    public boolean supportsMixedCaseQuotedIdentifiers() throws SQLException;
471    * @exception SQLException If an error occurs.  
472    */    /**
473  public abstract boolean     * This method tests whether or not the database treats mixed case
474  usesLocalFilePerTable() throws SQLException;     * quoted identifiers as all upper case.
475       *
476  /*************************************************************************/     * @exception <code>true</code> if the database treats all quoted identifiers
477       *            as upper case, <code>false</code> otherwise.
478  /**     * @exception SQLException If an error occurs.
479    * This method tests whether or not the database supports identifiers     */
480    * with mixed case.    public boolean storesUpperCaseQuotedIdentifiers() throws SQLException;
481    *  
482    * @return <code>true</code> if the database supports mixed case identifiers,    /**
483    * <code>false</code> otherwise.     * This method tests whether or not the database treats mixed case
484    *     * quoted identifiers as all lower case.
485    * @exception SQLException If an error occurs.     *
486    */     * @exception <code>true</code> if the database treats all quoted identifiers
487  public abstract boolean     *            as lower case, <code>false</code> otherwise.
488  supportsMixedCaseIdentifiers() throws SQLException;     * @exception SQLException If an error occurs.
489       */
490  /*************************************************************************/    public boolean storesLowerCaseQuotedIdentifiers() throws SQLException;
491    
492  /**    /**
493    * This method tests whether or not the database treats mixed case     * This method tests whether or not the database stores mixed case
494    * identifiers as all upper case.     * quoted identifers even if it treats them as case insensitive.
495    *     *
496    * @return <code>true</code> if the database treats all identifiers as     * @return <code>true</code> if the database stores mixed case quoted
497    * upper case, <code>false</code> otherwise.     *         identifiers, <code>false</code> otherwise.
498    *     * @exception SQLException If an error occurs.
499    * @exception SQLException If an error occurs.     */
500    */    public boolean storesMixedCaseQuotedIdentifiers() throws SQLException;
501  public abstract boolean  
502  storesUpperCaseIdentifiers() throws SQLException;    /**
503       * This metohd returns the quote string for SQL identifiers.
504  /*************************************************************************/     *
505       * @return The quote string for SQL identifers, or a space if quoting
506  /**     *         is not supported.
507    * This method tests whether or not the database treats mixed case     * @exception SQLException If an error occurs.
508    * identifiers as all lower case.     */
509    *    public String getIdentifierQuoteString() throws SQLException;
510    * @return <code>true</code> if the database treats all identifiers as  
511    * lower case, <code>false</code> otherwise.    /**
512    *     * This method returns a comma separated list of all the SQL keywords in
513    * @exception SQLException If an error occurs.     * the database that are not in SQL92.
514    */     *
515  public abstract boolean     * @return The list of SQL keywords not in SQL92.
516  storesLowerCaseIdentifiers() throws SQLException;     * @exception SQLException If an error occurs.
517       */
518  /*************************************************************************/    public String getSQLKeywords() throws SQLException;
519    
520  /**    /**
521    * This method tests whether or not the database stores mixed case     * This method returns a comma separated list of math functions.
522    * identifers even if it treats them as case insensitive.     *
523    *     * @return The list of math functions.
524    * @return <code>true</code> if the database stores mixed case identifiers,     * @exception SQLException If an error occurs.
525    * <code>false</code> otherwise.     */
526    *    public String getNumericFunctions() throws SQLException;
527    * @exception SQLException If an error occurs.  
528    */    /**
529  public abstract boolean     * This method returns a comma separated list of string functions.
530  storesMixedCaseIdentifiers() throws SQLException;     *
531       * @return The list of string functions.
532  /*************************************************************************/     * @exception SQLException If an error occurs.
533       */
534  /**    public String getStringFunctions() throws SQLException;
535    * This method tests whether or not the database supports quoted identifiers  
536    * with mixed case.    /**
537    *     * This method returns a comma separated list of of system functions.
538    * @return <code>true</code> if the database supports mixed case quoted     *
539    * identifiers, <code>false</code> otherwise.     * @return A comma separated list of system functions.
540    *     * @exception SQLException If an error occurs.
541    * @exception SQLException If an error occurs.     */
542    */    public String getSystemFunctions() throws SQLException;
543  public abstract boolean  
544  supportsMixedCaseQuotedIdentifiers() throws SQLException;    /**
545       * This method returns comma separated list of time/date functions.
546  /*************************************************************************/     *
547       * @return The list of time/date functions.
548  /**     * @exception SQLException If an error occurs.
549    * This method tests whether or not the database treats mixed case     */
550    * quoted identifiers as all upper case.    public String getTimeDateFunctions() throws SQLException;
551    *  
552    * @return <code>true</code> if the database treats all quoted identifiers    /**
553    * as upper case, <code>false</code> otherwise.     * This method returns the string used to escape wildcards in search strings.
554    *     *
555    * @exception SQLException If an error occurs.     * @return The string used to escape wildcards in search strings.
556    */     * @exception SQLException If an error occurs.
557  public abstract boolean     */
558  storesUpperCaseQuotedIdentifiers() throws SQLException;    public String getSearchStringEscape() throws SQLException;
559    
560  /*************************************************************************/    /**
561       * This methods returns non-standard characters that can appear in
562  /**     * unquoted identifiers.
563    * This method tests whether or not the database treats mixed case     *
564    * quoted identifiers as all lower case.     * @return Non-standard characters that can appear in unquoted identifiers.
565    *     * @exception SQLException If an error occurs.
566    * @return <code>true</code> if the database treats all quoted identifiers     */
567    * as lower case, <code>false</code> otherwise.    public String getExtraNameCharacters() throws SQLException;
568    *  
569    * @exception SQLException If an error occurs.    /**
570    */     * This method tests whether or not the database supports
571  public abstract boolean     * "ALTER TABLE ADD COLUMN"
572  storesLowerCaseQuotedIdentifiers() throws SQLException;     *
573       * @return <code>true</code> if column add supported, <code>false</code>
574  /*************************************************************************/     *         otherwise.
575       * @exception SQLException If an error occurs.
576  /**     */
577    * This method tests whether or not the database stores mixed case    public boolean supportsAlterTableWithAddColumn() throws SQLException;
578    * quoted identifers even if it treats them as case insensitive.  
579    *    /**
580    * @return <code>true</code> if the database stores mixed case quoted     * This method tests whether or not the database supports
581    * identifiers, <code>false</code> otherwise.     * "ALTER TABLE DROP COLUMN"
582    *     *
583    * @exception SQLException If an error occurs.     * @return <code>true</code> if column drop supported, <code>false</code>
584    */     *         otherwise.
585  public abstract boolean     * @exception SQLException If an error occurs.
586  storesMixedCaseQuotedIdentifiers() throws SQLException;     */
587      public boolean supportsAlterTableWithDropColumn() throws SQLException;
588  /*************************************************************************/  
589      /**
590  /**     * This method tests whether or not column aliasing is supported.
591    * This metohd returns the quote string for SQL identifiers.     *
592    *     * @return <code>true</code> if column aliasing is supported,
593    * @return The quote string for SQL identifers, or a space if quoting     *         <code>false</code> otherwise.
594    * is not supported.     * @exception SQLException If an error occurs.
595    *     */
596    * @exception SQLException If an error occurs.    public boolean supportsColumnAliasing() throws SQLException;
597    */  
598  public abstract String    /**
599  getIdentifierQuoteString() throws SQLException;     * This method tests whether the concatenation of a NULL and non-NULL
600       * value results in a NULL.  This will always be true in fully JDBC compliant
601  /*************************************************************************/     * drivers.
602       *
603  /**     * @return <code>true</code> if concatenating NULL and a non-NULL value
604    * This method returns a comma separated list of all the SQL keywords in     *         returns a NULL, <code>false</code> otherwise.
605    * the database that are not in SQL92.     * @exception SQLException If an error occurs.
606    *     */
607    * @return The list of SQL keywords not in SQL92.    public boolean nullPlusNonNullIsNull() throws SQLException;
608    *  
609    * @exception SQLException If an error occurs.    /**
610    */     * Tests whether or not CONVERT is supported.
611  public abstract String     *
612  getSQLKeywords() throws SQLException;     * @return <code>true</code> if CONVERT is supported, <code>false</code>
613       *         otherwise.
614  /*************************************************************************/     * @exception SQLException If an error occurs.
615       */
616  /**    public boolean supportsConvert() throws SQLException;
617    * This method returns a comma separated list of math functions.  
618    *    /**
619    * @return The list of math functions.     * This method tests whether or not CONVERT can be performed between the
620    *     * specified types.  The types are contants from <code>Types</code>.
621    * @exception SQLException If an error occurs.     *
622    */     * @param fromType The SQL type to convert from.
623  public abstract String     * @param toType The SQL type to convert to.
624  getNumericFunctions() throws SQLException;     * @return <code>true</code> if the conversion can be performed,
625       *         <code>false</code> otherwise.
626  /*************************************************************************/     * @see Types
627       */
628  /**    public boolean supportsConvert(int fromType, int toType) throws
629    * This method returns a comma separated list of string functions.        SQLException;
630    *  
631    * @return The list of string functions.    /**
632    *     * This method tests whether or not table correlation names are
633    * @exception SQLException If an error occurs.     * supported.  This will be always be <code>true</code> in a fully JDBC
634    */     * compliant driver.
635  public abstract String     *
636  getStringFunctions() throws SQLException;     * @return <code>true</code> if table correlation names are supported,
637       *         <code>false</code> otherwise.
638  /*************************************************************************/     * @exception SQLException If an error occurs.
639       */
640  /**    public boolean supportsTableCorrelationNames() throws SQLException;
641    * This method returns a comma separated list of of system functions.  
642    *    /**
643    * @return A comma separated list of system functions.     * This method tests whether correlation names must be different from the
644    *     * name of the table.
645    * @exception SQLException If an error occurs.     *
646    */     * @return <code>true</code> if the correlation name must be different from
647  public abstract String     *         the table name, <code>false</code> otherwise.
648  getSystemFunctions() throws SQLException;     * @exception SQLException If an error occurs.
649       */
650  /*************************************************************************/    public boolean supportsDifferentTableCorrelationNames() throws SQLException;
651    
652  /**    /**
653    * This method returns comma separated list of time/date functions.     * This method tests whether or not expressions are allowed in an
654    *     * ORDER BY lists.
655    * @return The list of time/date functions.     *
656    *     * @return <code>true</code> if expressions are allowed in ORDER BY
657    * @exception SQLException If an error occurs.     *         lists, <code>false</code> otherwise.
658    */     * @exception SQLException If an error occurs.
659  public abstract String     */
660  getTimeDateFunctions() throws SQLException;    public boolean supportsExpressionsInOrderBy() throws SQLException;
661    
662  /*************************************************************************/    /**
663       * This method tests whether or ORDER BY on a non-selected column is
664  /**     * allowed.
665    * This method returns the string used to escape wildcards in search strings.     *
666    *     * @return <code>true</code> if a non-selected column can be used in an
667    * @return The string used to escape wildcards in search strings.     *         ORDER BY, <code>false</code> otherwise.
668    *     * @exception SQLException If an error occurs.
669    * @exception SQLException If an error occurs.     */
670    */    public boolean supportsOrderByUnrelated() throws SQLException;
671  public abstract String  
672  getSearchStringEscape() throws SQLException;    /**
673       * This method tests whether or not GROUP BY is supported.
674  /*************************************************************************/     *
675       * @return <code>true</code> if GROUP BY is supported, <code>false</code>
676  /**     *         otherwise.
677    * This methods returns non-standard characters that can appear in     * @exception SQLException If an error occurs.
678    * unquoted identifiers.     */
679    *    public boolean supportsGroupBy() throws SQLException;
680    * @return Non-standard characters that can appear in unquoted identifiers.  
681    *    /**
682    * @exception SQLException If an error occurs.     * This method tests whether GROUP BY on a non-selected column is
683    */     * allowed.
684  public abstract String     *
685  getExtraNameCharacters() throws SQLException;     * @return <code>true</code> if a non-selected column can be used in a
686       *         GROUP BY, <code>false</code> otherwise.
687  /*************************************************************************/     * @exception SQLException If an error occurs.
688       */
689  /**    public boolean supportsGroupByUnrelated() throws SQLException;
690    * This method tests whether or not the database supports  
691    * "ALTER TABLE ADD COLUMN"    /**
692    *     * This method tests whether or not a GROUP BY can add columns not in the
693    * @return <code>true</code> if column add supported, <code>false</code>     * select if it includes all the columns in the select.
694    * otherwise.     *
695    *     * @return <code>true</code> if GROUP BY an add columns provided it includes
696    * @exception SQLException If an error occurs.     *         all columns in the select, <code>false</code> otherwise.
697    */     * @exception SQLException If an error occurs.
698  public abstract boolean     */
699  supportsAlterTableWithAddColumn() throws SQLException;    public boolean supportsGroupByBeyondSelect() throws SQLException;
700    
701  /*************************************************************************/    /**
702       * This method tests whether or not the escape character is supported in
703  /**     * LIKE expressions.  A fully JDBC compliant driver will always return
704    * This method tests whether or not the database supports     * <code>true</code>.
705    * "ALTER TABLE DROP COLUMN"     *
706    *     * @return <code>true</code> if escapes are supported in LIKE expressions,
707    * @return <code>true</code> if column drop supported, <code>false</code>     *         <code>false</code> otherwise.
708    * otherwise.     * @exception SQLException If an error occurs.
709    *     */
710    * @exception SQLException If an error occurs.    public boolean supportsLikeEscapeClause() throws SQLException;
711    */  
712  public abstract boolean    /**
713  supportsAlterTableWithDropColumn() throws SQLException;     * This method tests whether multiple result sets for a single statement are
714       * supported.
715  /*************************************************************************/     *
716       * @return <code>true</code> if multiple result sets are supported for a
717  /**     *         single statement, <code>false</code> otherwise.
718    * This method tests whether or not column aliasing is supported.     * @exception SQLException If an error occurs.
719    *     */
720    * @return <code>true</code> if column aliasing is supported,    public boolean supportsMultipleResultSets() throws SQLException;
721    * <code>false</code> otherwise.  
722    *    /**
723    * @exception SQLException If an error occurs.     * This method test whether or not multiple transactions may be open
724    */     * at once, as long as they are on different connections.
725  public abstract boolean     *
726  supportsColumnAliasing() throws SQLException;     * @return <code>true</code> if multiple transactions on different
727       *         connections are supported, <code>false</code> otherwise.
728  /*************************************************************************/     * @exception SQLException If an error occurs.
729       */
730  /**    public boolean supportsMultipleTransactions() throws SQLException;
731    * This method tests whether the concatenation of a NULL and non-NULL  
732    * value results in a NULL.  This will always be true in fully JDBC compliant    /**
733    * drivers.     * This method tests whether or not columns can be defined as NOT NULL.  A
734    *     * fully JDBC compliant driver always returns <code>true</code>.
735    * @return <code>true</code> if concatenating NULL and a non-NULL value     *
736    * returns a NULL, <code>false</code> otherwise.     * @return <code>true</code> if NOT NULL columns are supported,
737    *     *         <code>false</code> otherwise.
738    * @exception SQLException If an error occurs.     * @exception SQLException If an error occurs.
739    */     */
740  public abstract boolean    public boolean supportsNonNullableColumns() throws SQLException;
741  nullPlusNonNullIsNull() throws SQLException;  
742      /**
743  /*************************************************************************/     * This method tests whether or not the minimum grammer for ODBC is supported.
744       * A fully JDBC compliant driver will always return <code>true</code>.
745  /**     *
746    * Tests whether or not CONVERT is supported.     * @return <code>true</code> if the ODBC minimum grammar is supported,
747    *     *         <code>false</code> otherwise.
748    * @return <code>true</code> if CONVERT is supported, <code>false</code>     * @exception SQLException If an error occurs.
749    * otherwise.     */
750    *    public boolean supportsMinimumSQLGrammar() throws SQLException;
751    * @exception SQLException If an error occurs.  
752    */    /**
753  public abstract boolean     * This method tests whether or not the core grammer for ODBC is supported.
754  supportsConvert() throws SQLException;     *
755       * @return <code>true</code> if the ODBC core grammar is supported,
756  /*************************************************************************/     *         <code>false</code> otherwise.
757       * @exception SQLException If an error occurs.
758  /**     */
759    * This method tests whether or not CONVERT can be performed between the    public boolean supportsCoreSQLGrammar() throws SQLException;
760    * specified types.  The types are contants from <code>Types</code>.  
761    *    /**
762    * @param fromType The SQL type to convert from.     * This method tests whether or not the extended grammer for ODBC is supported.
763    * @param toType The SQL type to convert to.     *
764    *     * @return <code>true</code> if the ODBC extended grammar is supported,
765    * @return <code>true</code> if the conversion can be performed,     *         <code>false</code> otherwise.
766    * <code>false</code> otherwise.     * @exception SQLException If an error occurs.
767    *     */
768    * @see Types    public boolean supportsExtendedSQLGrammar() throws SQLException;
769    */  
770  public abstract boolean    /**
771  supportsConvert(int fromType, int toType) throws SQLException;     * This method tests whether or not the ANSI92 entry level SQL
772       * grammar is supported.  A fully JDBC compliant drivers must return
773  /*************************************************************************/     * <code>true</code>.
774       *
775  /**     * @return <code>true</code> if the ANSI92 entry level SQL grammar is
776    * This method tests whether or not table correlation names are     *         supported, <code>false</code> otherwise.
777    * supported.  This will be always be <code>true</code> in a fully JDBC     * @exception SQLException If an error occurs.
778    * compliant driver.     */
779    *    public boolean supportsANSI92EntryLevelSQL() throws SQLException;
780    * @return <code>true</code> if table correlation names are supported,  
781    * <code>false</code> otherwise.    /**
782    *     * This method tests whether or not the ANSI92 intermediate SQL
783    * @exception SQLException If an error occurs.     * grammar is supported.  
784    */     *
785  public abstract boolean     * @return <code>true</code> if the ANSI92 intermediate SQL grammar is
786  supportsTableCorrelationNames() throws SQLException;     *         supported, <code>false</code> otherwise.
787       * @exception SQLException If an error occurs.
788  /*************************************************************************/     */
789      public boolean supportsANSI92IntermediateSQL() throws SQLException;
790  /**  
791    * This method tests whether correlation names must be different from the    /**
792    * name of the table.     * This method tests whether or not the ANSI92 full SQL
793    *     * grammar is supported.  
794    * @return <code>true</code> if the correlation name must be different from     *
795    * the table name, <code>false</code> otherwise.     * @return <code>true</code> if the ANSI92 full SQL grammar is
796    *     *         supported, <code>false</code> otherwise.
797    * @exception SQLException If an error occurs.     * @exception SQLException If an error occurs.
798    */     */
799  public abstract boolean    public boolean supportsANSI92FullSQL() throws SQLException;
800  supportsDifferentTableCorrelationNames() throws SQLException;  
801      /**
802  /*************************************************************************/     * This method tests whether or not the SQL integrity enhancement
803       * facility is supported.
804  /**     *
805    * This method tests whether or not expressions are allowed in an     * @return <code>true</code> if the integrity enhancement facility is
806    * ORDER BY lists.     *         supported, <code>false</code> otherwise.
807    *     * @exception SQLException If an error occurs.
808    * @return <code>true</code> if expressions are allowed in ORDER BY     */
809    * lists, <code>false</code> otherwise.    public boolean supportsIntegrityEnhancementFacility() throws SQLException;
810    *  
811    * @exception SQLException If an error occurs.    /**
812    */     * This method tests whether or not the database supports outer joins.
813  public abstract boolean     *
814  supportsExpressionsInOrderBy() throws SQLException;     * @return <code>true</code> if outer joins are supported, <code>false</code>
815       *         otherwise.
816  /*************************************************************************/     * @exception SQLException If an error occurs.
817       */
818  /**    public boolean supportsOuterJoins() throws SQLException;
819    * This method tests whether or ORDER BY on a non-selected column is  
820    * allowed.    /**
821    *     * This method tests whether or not the database supports full outer joins.
822    * @return <code>true</code> if a non-selected column can be used in an     *
823    * ORDER BY, <code>false</code> otherwise.     * @return <code>true</code> if full outer joins are supported,
824    *     *         <code>false</code> otherwise.
825    * @exception SQLException If an error occurs.     * @exception SQLException If an error occurs.
826    */     */
827  public abstract boolean    public boolean supportsFullOuterJoins() throws SQLException;
828  supportsOrderByUnrelated() throws SQLException;  
829      /**
830  /*************************************************************************/     * This method tests whether or not the database supports limited outer joins.
831       *
832  /**     * @return <code>true</code> if limited outer joins are supported,
833    * This method tests whether or not GROUP BY is supported.     *         <code>false</code> otherwise.
834    *     * @exception SQLException If an error occurs.
835    * @return <code>true</code> if GROUP BY is supported, <code>false</code>     */
836    * otherwise.    public boolean supportsLimitedOuterJoins() throws SQLException;
837    *  
838    * @exception SQLException If an error occurs.    /**
839    */     * This method returns the vendor's term for "schema".
840  public abstract boolean     *
841  supportsGroupBy() throws SQLException;     * @return The vendor's term for schema.
842       * @exception SQLException if an error occurs.
843  /*************************************************************************/     */
844      public String getSchemaTerm() throws SQLException;
845  /**  
846    * This method tests whether GROUP BY on a non-selected column is    /**
847    * allowed.     * This method returns the vendor's term for "procedure".
848    *     *
849    * @return <code>true</code> if a non-selected column can be used in a     * @return The vendor's term for procedure.
850    * GROUP BY, <code>false</code> otherwise.     * @exception SQLException if an error occurs.
851    *     */
852    * @exception SQLException If an error occurs.    public String getProcedureTerm() throws SQLException;
853    */  
854  public abstract boolean    /**
855  supportsGroupByUnrelated() throws SQLException;     * This method returns the vendor's term for "catalog".
856       *
857  /*************************************************************************/     * @return The vendor's term for catalog.
858       * @exception SQLException if an error occurs.
859  /**     */
860    * This method tests whether or not a GROUP BY can add columns not in the    public String getCatalogTerm() throws SQLException;
861    * select if it includes all the columns in the select.  
862    *    /**
863    * @return <code>true</code> if GROUP BY an add columns provided it includes     * This method tests whether a catalog name appears at the beginning of
864    * all columns in the select, <code>false</code> otherwise.     * a fully qualified table name.
865    *     *
866    * @exception SQLException If an error occurs.     * @return <code>true</code> if the catalog name appears at the beginning,
867    */     *         <code>false</code> if it appears at the end.
868  public abstract boolean     * @exception SQLException If an error occurs.
869  supportsGroupByBeyondSelect() throws SQLException;     */
870      public boolean isCatalogAtStart() throws SQLException;
871  /*************************************************************************/  
872      /**
873  /**     * This method returns the separator between the catalog name and the
874    * This method tests whether or not the escape character is supported in     * table name.
875    * LIKE expressions.  A fully JDBC compliant driver will always return     *
876    * <code>true</code>.     * @return The separator between the catalog name and the table name.
877    *     * @exception SQLException If an error occurs.
878    * @return <code>true</code> if escapes are supported in LIKE expressions,     */
879    * <code>false</code> otherwise.    public String getCatalogSeparator() throws SQLException;
880    *  
881    * @exception SQLException If an error occurs.    /**
882    */     * This method tests whether a catalog name can appear in a data
883  public abstract boolean supportsLikeEscapeClause() throws SQLException;     * manipulation statement.
884       *
885  /*************************************************************************/     * @return <code>true</code> if a catalog name can appear in a data
886       *         manipulation statement, <code>false</code> otherwise.
887  /**     * @exception SQLException If an error occurs.
888    * This method tests whether multiple result sets for a single statement are     */
889    * supported.    public boolean supportsSchemasInDataManipulation() throws SQLException;
890    *  
891    * @return <code>true</code> if multiple result sets are supported for a    /**
892    * single statement, <code>false</code> otherwise.     * This method tests whether a catalog name can appear in a procedure
893    *     * call
894    * @exception SQLException If an error occurs.     *
895    */     * @return <code>true</code> if a catalog name can appear in a procedure
896  public abstract boolean     *         call, <code>false</code> otherwise.
897  supportsMultipleResultSets() throws SQLException;     * @exception SQLException If an error occurs.
898       */
899  /*************************************************************************/    public boolean supportsSchemasInProcedureCalls() throws SQLException;
900    
901  /**    /**
902    * This method test whether or not multiple transactions may be open     * This method tests whether a catalog name can appear in a table definition.
903    * at once, as long as they are on different connections.     *
904    *     * @return <code>true</code> if a catalog name can appear in a table
905    * @return <code>true</code> if multiple transactions on different     *         definition, <code>false</code> otherwise.
906    * connections are supported, <code>false</code> otherwise.     * @exception SQLException If an error occurs.
907    *     */
908    * @exception SQLException If an error occurs.    public boolean supportsSchemasInTableDefinitions() throws SQLException;
909    */  
910  public abstract boolean    /**
911  supportsMultipleTransactions() throws SQLException;     * This method tests whether a catalog name can appear in an index definition.
912       *
913  /*************************************************************************/     * @return <code>true</code> if a catalog name can appear in an index
914       *         definition, <code>false</code> otherwise.
915  /**     * @exception SQLException If an error occurs.
916    * This method tests whether or not columns can be defined as NOT NULL.  A     */
917    * fully JDBC compliant driver always returns <code>true</code>.    public boolean supportsSchemasInIndexDefinitions() throws SQLException;
918    *  
919    * @return <code>true</code> if NOT NULL columns are supported,    /**
920    * <code>false</code> otherwise.     * This method tests whether a catalog name can appear in privilege definitions.
921    *     *
922    * @exception SQLException If an error occurs.     * @return <code>true</code> if a catalog name can appear in privilege
923    */     *         definition, <code>false</code> otherwise.
924  public abstract boolean     * @exception SQLException If an error occurs.
925  supportsNonNullableColumns() throws SQLException;     */
926      public boolean supportsSchemasInPrivilegeDefinitions() throws SQLException;
927  /*************************************************************************/  
928      /**
929  /**     * This method tests whether a catalog name can appear in a data
930    * This method tests whether or not the minimum grammer for ODBC is supported.     * manipulation statement.
931    * A fully JDBC compliant driver will always return <code>true</code>.     *
932    *     * @return <code>true</code> if a catalog name can appear in a data
933    * @return <code>true</code> if the ODBC minimum grammar is supported,     *         manipulation statement, <code>false</code> otherwise.
934    * <code>false</code> otherwise.     * @exception SQLException If an error occurs.
935    *     */
936    * @exception SQLException If an error occurs.    public boolean supportsCatalogsInDataManipulation() throws SQLException;
937    */  
938  public abstract boolean    /**
939  supportsMinimumSQLGrammar() throws SQLException;     * This method tests whether a catalog name can appear in a procedure
940       * call
941  /*************************************************************************/     *
942       * @return <code>true</code> if a catalog name can appear in a procedure
943  /**     *         call, <code>false</code> otherwise.
944    * This method tests whether or not the core grammer for ODBC is supported.     * @exception SQLException If an error occurs.
945    *     */
946    * @return <code>true</code> if the ODBC core grammar is supported,    public boolean supportsCatalogsInProcedureCalls() throws SQLException;
947    * <code>false</code> otherwise.  
948    *    /**
949    * @exception SQLException If an error occurs.     * This method tests whether a catalog name can appear in a table definition.
950    */     *
951  public abstract boolean     * @return <code>true</code> if a catalog name can appear in a table
952  supportsCoreSQLGrammar() throws SQLException;     *         definition, <code>false</code> otherwise.
953       * @exception SQLException If an error occurs.
954  /*************************************************************************/     */
955      public boolean supportsCatalogsInTableDefinitions() throws SQLException;
956  /**  
957    * This method tests whether or not the extended grammer for ODBC is supported.    /**
958    *     * This method tests whether a catalog name can appear in an index definition.
959    * @return <code>true</code> if the ODBC extended grammar is supported,     *
960    * <code>false</code> otherwise.     * @return <code>true</code> if a catalog name can appear in an index
961    *     *         definition, <code>false</code> otherwise.
962    * @exception SQLException If an error occurs.     * @exception SQLException If an error occurs.
963    */     */
964  public abstract boolean    public boolean supportsCatalogsInIndexDefinitions() throws SQLException;
965  supportsExtendedSQLGrammar() throws SQLException;  
966      /**
967  /*************************************************************************/     * This method tests whether a catalog name can appear in privilege definitions.
968       *
969  /**     * @return <code>true</code> if a catalog name can appear in privilege
970    * This method tests whether or not the ANSI92 entry level SQL     *         definition, <code>false</code> otherwise.
971    * grammar is supported.  A fully JDBC compliant drivers must return     * @exception SQLException If an error occurs.
972    * <code>true</code>.     */
973    *    public boolean supportsCatalogsInPrivilegeDefinitions() throws SQLException;
974    * @return <code>true</code> if the ANSI92 entry level SQL grammar is  
975    * supported, <code>false</code> otherwise.    /**
976    *     * This method tests whether or not that database supports positioned
977    * @exception SQLException If an error occurs.     * deletes.
978    */     *
979  public abstract boolean     * @return <code>true</code> if positioned deletes are supported,
980  supportsANSI92EntryLevelSQL() throws SQLException;     *         <code>false</code> otherwise.
981       * @exception SQLException If an error occurs.
982  /*************************************************************************/     */
983      public boolean supportsPositionedDelete() throws SQLException;
984  /**  
985    * This method tests whether or not the ANSI92 intermediate SQL    /**
986    * grammar is supported.       * This method tests whether or not that database supports positioned
987    *     * updates.
988    * @return <code>true</code> if the ANSI92 intermediate SQL grammar is     *
989    * supported, <code>false</code> otherwise.     * @return <code>true</code> if positioned updates are supported,
990    *     *         <code>false</code> otherwise.
991    * @exception SQLException If an error occurs.     * @exception SQLException If an error occurs.
992    */     */
993  public abstract boolean    public boolean supportsPositionedUpdate() throws SQLException;
994  supportsANSI92IntermediateSQL() throws SQLException;  
995      /**
996  /*************************************************************************/     * This method tests whether or not SELECT FOR UPDATE is supported by the
997       * database.
998  /**     *
999    * This method tests whether or not the ANSI92 full SQL     * @return <code>true</code> if SELECT FOR UPDATE is supported
1000    * grammar is supported.       *         <code>false</code> otherwise.
1001    *     * @exception SQLException If an error occurs.
1002    * @return <code>true</code> if the ANSI92 full SQL grammar is     */
1003    * supported, <code>false</code> otherwise.    public boolean supportsSelectForUpdate() throws SQLException;
1004    *  
1005    * @exception SQLException If an error occurs.    /**
1006    */     * This method tests whether or not stored procedures are supported on
1007  public abstract boolean     * this database.
1008  supportsANSI92FullSQL() throws SQLException;     *
1009       * @return <code>true</code> if stored procedures are supported,
1010  /*************************************************************************/     *         <code>false</code> otherwise.
1011       * @exception SQLException If an error occurs.
1012  /**     */
1013    * This method tests whether or not the SQL integrity enhancement    public boolean supportsStoredProcedures() throws SQLException;
1014    * facility is supported.  
1015    *    /**
1016    * @return <code>true</code> if the integrity enhancement facility is     * This method tests whether or not subqueries are allowed in comparisons.
1017    * supported, <code>false</code> otherwise.     * A fully JDBC compliant driver will always return <code>true</code>.
1018    *     *
1019    * @exception SQLException If an error occurs.     * @return <code>true</code> if subqueries are allowed in comparisons,
1020    */     *         <code>false</code> otherwise.
1021  public abstract boolean     * @exception SQLException If an error occurs.
1022  supportsIntegrityEnhancementFacility() throws SQLException;     */
1023      public boolean supportsSubqueriesInComparisons() throws SQLException;
1024  /*************************************************************************/  
1025      /**
1026  /**     * This method tests whether or not subqueries are allowed in exists
1027    * This method tests whether or not the database supports outer joins.     * expressions.  A fully JDBC compliant driver will always return
1028    *     * <code>true</code>.
1029    * @return <code>true</code> if outer joins are supported, <code>false</code>     *
1030    * otherwise.     * @return <code>true</code> if subqueries are allowed in exists
1031    *     *         expressions, <code>false</code> otherwise.
1032    * @exception SQLException If an error occurs.     * @exception SQLException If an error occurs.
1033    */     */
1034  public abstract boolean    public boolean supportsSubqueriesInExists() throws SQLException;
1035  supportsOuterJoins() throws SQLException;  
1036      /**
1037  /*************************************************************************/     * This method tests whether subqueries are allowed in IN statements.
1038       * A fully JDBC compliant driver will always return <code>true</code>.
1039  /**     *
1040    * This method tests whether or not the database supports full outer joins.     * @return <code>true</code> if the driver supports subqueries in IN
1041    *     *         statements, <code>false</code> otherwise.
1042    * @return <code>true</code> if full outer joins are supported,     * @exception SQLException If an error occurs.
1043    * <code>false</code> otherwise.     */
1044    *    public boolean supportsSubqueriesInIns() throws SQLException;
1045    * @exception SQLException If an error occurs.  
1046    */    /**
1047  public abstract boolean     * This method tests whether or not subqueries are allowed in quantified
1048  supportsFullOuterJoins() throws SQLException;     * expressions.  A fully JDBC compliant driver will always return
1049       * <code>true</code>.
1050  /*************************************************************************/     *
1051       * @return <code>true</code> if subqueries are allowed in quantified
1052  /**     *         expressions, <code>false</code> otherwise.
1053    * This method tests whether or not the database supports limited outer joins.     * @exception SQLException If an error occurs.
1054    *     */
1055    * @return <code>true</code> if limited outer joins are supported,    public boolean supportsSubqueriesInQuantifieds() throws SQLException;
1056    * <code>false</code> otherwise.  
1057    *    /**
1058    * @exception SQLException If an error occurs.     * This method test whether or not correlated subqueries are allowed. A
1059    */     * fully JDBC compliant driver will always return <code>true</code>.
1060  public abstract boolean     *
1061  supportsLimitedOuterJoins() throws SQLException;     * @return <code>true</code> if correlated subqueries are allowed,
1062       *         <code>false</code> otherwise.
1063  /*************************************************************************/     * @exception SQLException If an error occurs.
1064       */
1065  /**    public boolean supportsCorrelatedSubqueries() throws SQLException;
1066    * This method returns the vendor's term for "schema".  
1067    *    /**
1068    * @return The vendor's term for schema.     * This method tests whether or not the UNION statement is supported.
1069    *     *
1070    * @exception SQLException if an error occurs.     * @return <code>true</code> if UNION is supported, <code>false</code>
1071    */     *         otherwise.
1072  public abstract String     * @exception SQLException If an error occurs.
1073  getSchemaTerm() throws SQLException;     */
1074      public boolean supportsUnion() throws SQLException;
1075  /*************************************************************************/  
1076      /**
1077  /**     * This method tests whether or not the UNION ALL statement is supported.
1078    * This method returns the vendor's term for "procedure".     *
1079    *     * @return <code>true</code> if UNION ALL is supported, <code>false</code>
1080    * @return The vendor's term for procedure.     *         otherwise.
1081    *     * @exception SQLException If an error occurs.
1082    * @exception SQLException if an error occurs.     */
1083    */    public boolean supportsUnionAll() throws SQLException;
1084  public abstract String  
1085  getProcedureTerm() throws SQLException;    /**
1086       * This method tests whether or not the database supports cursors
1087  /*************************************************************************/     * remaining open across commits.
1088       *
1089  /**     * @return <code>true</code> if cursors can remain open across commits,
1090    * This method returns the vendor's term for "catalog".     *         <code>false</code> otherwise.
1091    *     * @exception SQLException If an error occurs.
1092    * @return The vendor's term for catalog.     */
1093    *    public boolean supportsOpenCursorsAcrossCommit() throws SQLException;
1094    * @exception SQLException if an error occurs.  
1095    */    /**
1096  public abstract String     * This method tests whether or not the database supports cursors
1097  getCatalogTerm() throws SQLException;     * remaining open across rollbacks.
1098       *
1099  /*************************************************************************/     * @return <code>true</code> if cursors can remain open across rollbacks,
1100       *         <code>false</code> otherwise.
1101  /**     * @exception SQLException If an error occurs.
1102    * This method tests whether a catalog name appears at the beginning of     */
1103    * a fully qualified table name.    public boolean supportsOpenCursorsAcrossRollback() throws SQLException;
1104    *  
1105    * @return <code>true</code> if the catalog name appears at the beginning,    /**
1106    * <code>false</code> if it appears at the end.     * This method tests whether or not the database supports statements
1107    *     * remaining open across commits.
1108    * @exception SQLException If an error occurs.     *
1109    */     * @return <code>true</code> if statements can remain open across commits,
1110  public abstract boolean     *         <code>false</code> otherwise.
1111  isCatalogAtStart() throws SQLException;     * @exception SQLException If an error occurs.
1112       */
1113  /*************************************************************************/    public boolean supportsOpenStatementsAcrossCommit() throws SQLException;
1114    
1115  /**    /**
1116    * This method returns the separator between the catalog name and the     * This method tests whether or not the database supports statements
1117    * table name.     * remaining open across rollbacks.
1118    *     *
1119    * @return The separator between the catalog name and the table name.     * @return <code>true</code> if statements can remain open across rollbacks,
1120    *     *         <code>false</code> otherwise.
1121    * @exception SQLException If an error occurs.     * @exception SQLException If an error occurs.
1122    */     */
1123  public abstract String    public boolean supportsOpenStatementsAcrossRollback() throws SQLException;
1124  getCatalogSeparator() throws SQLException;  
1125      /**
1126  /*************************************************************************/     * This method returns the number of hex characters allowed in an inline
1127       * binary literal.
1128  /**     *
1129    * This method tests whether a catalog name can appear in a data     * @return The number of hex characters allowed in a binary literal, 0 meaning
1130    * manipulation statement.     *         either an unknown or unlimited number.
1131    *     * @exception SQLException If an error occurs.
1132    * @return <code>true</code> if a catalog name can appear in a data     */
1133    * manipulation statement, <code>false</code> otherwise.    public int getMaxBinaryLiteralLength() throws SQLException;
1134    *  
1135    * @exception SQLException If an error occurs.    /**
1136    */     * This method returns the maximum length of a character literal.
1137  public abstract boolean     *
1138  supportsSchemasInDataManipulation() throws SQLException;     * @return The maximum length of a character literal.
1139       * @exception SQLException If an error occurs.
1140  /*************************************************************************/     */
1141      public int getMaxCharLiteralLength() throws SQLException;
1142  /**  
1143    * This method tests whether a catalog name can appear in a procedure    /**
1144    * call     * This method returns the maximum length of a column name.
1145    *     *
1146    * @return <code>true</code> if a catalog name can appear in a procedure     * @return The maximum length of a column name.
1147    * call, <code>false</code> otherwise.     * @exception SQLException If an error occurs.
1148    *     */
1149    * @exception SQLException If an error occurs.    public int getMaxColumnNameLength() throws SQLException;
1150    */  
1151  public abstract boolean    /**
1152  supportsSchemasInProcedureCalls() throws SQLException;     * This method returns the maximum number of columns in a GROUP BY statement.
1153       *
1154  /*************************************************************************/     * @return The maximum number of columns in a GROUP BY statement.
1155       * @exception SQLException If an error occurs.
1156  /**     */
1157    * This method tests whether a catalog name can appear in a table definition.    public int getMaxColumnsInGroupBy() throws SQLException;
1158    *  
1159    * @return <code>true</code> if a catalog name can appear in a table    /**
1160    * definition, <code>false</code> otherwise.     * This method returns the maximum number of columns in an index.
1161    *     *
1162    * @exception SQLException If an error occurs.     * @return The maximum number of columns in an index.
1163    */     * @exception SQLException If an error occurs.
1164  public abstract boolean     */
1165  supportsSchemasInTableDefinitions() throws SQLException;    public int getMaxColumnsInIndex() throws SQLException;
1166    
1167  /*************************************************************************/    /**
1168       * This method returns the maximum number of columns in an ORDER BY statement.
1169  /**     *
1170    * This method tests whether a catalog name can appear in an index definition.     * @return The maximum number of columns in an ORDER BY statement.
1171    *     * @exception SQLException If an error occurs.
1172    * @return <code>true</code> if a catalog name can appear in an index     */
1173    * definition, <code>false</code> otherwise.    public int getMaxColumnsInOrderBy() throws SQLException;
1174    *  
1175    * @exception SQLException If an error occurs.    /**
1176    */     * This method returns the maximum number of columns in a SELECT statement.
1177  public abstract boolean     *
1178  supportsSchemasInIndexDefinitions() throws SQLException;     * @return The maximum number of columns in a SELECT statement.
1179       * @exception SQLException If an error occurs.
1180  /*************************************************************************/     */
1181      public int getMaxColumnsInSelect() throws SQLException;
1182  /**  
1183    * This method tests whether a catalog name can appear in privilege definitions.    /**
1184    *     * This method returns the maximum number of columns in a table.
1185    * @return <code>true</code> if a catalog name can appear in privilege     *
1186    * definition, <code>false</code> otherwise.     * @return The maximum number of columns in a table.
1187    *     * @exception SQLException If an error occurs.
1188    * @exception SQLException If an error occurs.     */
1189    */    public int getMaxColumnsInTable() throws SQLException;
1190  public abstract boolean  
1191  supportsSchemasInPrivilegeDefinitions() throws SQLException;    /**
1192       * This method returns the maximum number of connections this client
1193  /*************************************************************************/     * can have to the database.
1194       *
1195  /**     * @return The maximum number of database connections.
1196    * This method tests whether a catalog name can appear in a data     * @SQLException If an error occurs.
1197    * manipulation statement.     */
1198    *    public int getMaxConnections() throws SQLException;
1199    * @return <code>true</code> if a catalog name can appear in a data  
1200    * manipulation statement, <code>false</code> otherwise.    /**
1201    *     * This method returns the maximum length of a cursor name.
1202    * @exception SQLException If an error occurs.     *
1203    */     * @return The maximum length of a cursor name.
1204  public abstract boolean     * @exception SQLException If an error occurs.
1205  supportsCatalogsInDataManipulation() throws SQLException;     */
1206      public int getMaxCursorNameLength() throws SQLException;
1207  /*************************************************************************/  
1208      /**
1209  /**     * This method returns the maximum length of an index.
1210    * This method tests whether a catalog name can appear in a procedure     *
1211    * call     * @return The maximum length of an index.
1212    *     * @exception SQLException If an error occurs.
1213    * @return <code>true</code> if a catalog name can appear in a procedure     */
1214    * call, <code>false</code> otherwise.    public int getMaxIndexLength() throws SQLException;
1215    *  
1216    * @exception SQLException If an error occurs.    /**
1217    */     * This method returns the maximum length of a schema name.
1218  public abstract boolean     *
1219  supportsCatalogsInProcedureCalls() throws SQLException;     * @return The maximum length of a schema name.
1220       * @exception SQLException If an error occurs.
1221  /*************************************************************************/     */
1222      public int getMaxSchemaNameLength() throws SQLException;
1223  /**  
1224    * This method tests whether a catalog name can appear in a table definition.    /**
1225    *     * This method returns the maximum length of a procedure name.
1226    * @return <code>true</code> if a catalog name can appear in a table     *
1227    * definition, <code>false</code> otherwise.     * @return The maximum length of a procedure name.
1228    *     * @exception SQLException If an error occurs.
1229    * @exception SQLException If an error occurs.     */
1230    */    public int getMaxProcedureNameLength() throws SQLException;
1231  public abstract boolean  
1232  supportsCatalogsInTableDefinitions() throws SQLException;    /**
1233       * This method returns the maximum length of a catalog name.
1234  /*************************************************************************/     *
1235       * @return The maximum length of a catalog name.
1236  /**     * @exception SQLException If an error occurs.
1237    * This method tests whether a catalog name can appear in an index definition.     */
1238    *    public int getMaxCatalogNameLength() throws SQLException;
1239    * @return <code>true</code> if a catalog name can appear in an index  
1240    * definition, <code>false</code> otherwise.    /**
1241    *     * This method returns the maximum size of a row in bytes.
1242    * @exception SQLException If an error occurs.     *
1243    */     * @return The maximum size of a row.
1244  public abstract boolean     * @exception SQLException If an error occurs.
1245  supportsCatalogsInIndexDefinitions() throws SQLException;     */
1246      public int getMaxRowSize() throws SQLException;
1247  /*************************************************************************/  
1248      /**
1249  /**     * This method tests whether or not the maximum row size includes BLOB's
1250    * This method tests whether a catalog name can appear in privilege definitions.     *
1251    *     * @return <code>true</code> if the maximum row size includes BLOB's,
1252    * @return <code>true</code> if a catalog name can appear in privilege     *         <code>false</code> otherwise.
1253    * definition, <code>false</code> otherwise.     * @exception SQLException If an error occurs.
1254    *     */
1255    * @exception SQLException If an error occurs.    public boolean doesMaxRowSizeIncludeBlobs() throws SQLException;
1256    */  
1257  public abstract boolean    /**
1258  supportsCatalogsInPrivilegeDefinitions() throws SQLException;     * This method includes the maximum length of a SQL statement.
1259       *
1260  /*************************************************************************/     * @return The maximum length of a SQL statement.
1261       * @exception SQLException If an error occurs.
1262  /**     */
1263    * This method tests whether or not that database supports positioned    public int getMaxStatementLength() throws SQLException;
1264    * deletes.  
1265    *    /**
1266    * @return <code>true</code> if positioned deletes are supported,     * This method returns the maximum number of statements that can be
1267    * <code>false</code> otherwise.     * active at any time.
1268    *     *
1269    * @exception SQLException If an error occurs.     * @return The maximum number of statements that can be active at any time.
1270    */     * @exception SQLException If an error occurs.
1271  public abstract boolean     */
1272  supportsPositionedDelete() throws SQLException;    public int getMaxStatements() throws SQLException;
1273    
1274  /*************************************************************************/    /**
1275       * This method returns the maximum length of a table name.
1276  /**     *
1277    * This method tests whether or not that database supports positioned     * @return The maximum length of a table name.
1278    * updates.     * @exception SQLException If an error occurs.
1279    *     */
1280    * @return <code>true</code> if positioned updates are supported,    public int getMaxTableNameLength() throws SQLException;
1281    * <code>false</code> otherwise.  
1282    *    /**
1283    * @exception SQLException If an error occurs.     * This method returns the maximum number of tables that may be referenced
1284    */     * in a SELECT statement.
1285  public abstract boolean     *
1286  supportsPositionedUpdate() throws SQLException;     * @return The maximum number of tables allowed in a SELECT statement.
1287       * @exception SQLException If an error occurs.
1288  /*************************************************************************/     */
1289      public int getMaxTablesInSelect() throws SQLException;
1290  /**  
1291    * This method tests whether or not SELECT FOR UPDATE is supported by the    /**
1292    * database.     * This method returns the maximum length of a user name.
1293    *     *
1294    * @return <code>true</code> if SELECT FOR UPDATE is supported     * @return The maximum length of a user name.
1295    * <code>false</code> otherwise.     * @exception SQLException If an error occurs.
1296    *     */
1297    * @exception SQLException If an error occurs.    public int getMaxUserNameLength() throws SQLException;
1298    */  
1299  public abstract boolean    /**
1300  supportsSelectForUpdate() throws SQLException;     * This method returns the default transaction isolation level of the
1301       * database.
1302  /*************************************************************************/     *
1303       * @return The default transaction isolation level of the database.
1304  /**     * @exception SQLException If an error occurs.
1305    * This method tests whether or not stored procedures are supported on     * @see Connection
1306    * this database.     */
1307    *    public int getDefaultTransactionIsolation() throws SQLException;
1308    * @return <code>true</code> if stored procedures are supported,  
1309    * <code>false</code> otherwise.    /**
1310    *     * This method tests whether or not the database supports transactions.
1311    * @exception SQLException If an error occurs.     *
1312    */     * @return <code>true</code> if the database supports transactions,
1313  public abstract boolean     *         <code>false</code> otherwise.
1314  supportsStoredProcedures() throws SQLException;     * @exception SQLException If an error occurs.
1315       */
1316  /*************************************************************************/    public boolean supportsTransactions() throws SQLException;
1317    
1318  /**    /**
1319    * This method tests whether or not subqueries are allowed in comparisons.     * This method tests whether or not the database supports the specified
1320    * A fully JDBC compliant driver will always return <code>true</code>.     * transaction isolation level.
1321    *     *
1322    * @return <code>true</code> if subqueries are allowed in comparisons,     * @param level The transaction isolation level.
1323    * <code>false</code> otherwise.     *
1324    *     * @return <code>true</code> if the specified transaction isolation level
1325    * @exception SQLException If an error occurs.     *         is supported, <code>false</code> otherwise.
1326    */     * @exception SQLException If an error occurs.
1327  public abstract boolean     */
1328  supportsSubqueriesInComparisons() throws SQLException;    public boolean supportsTransactionIsolationLevel(int level) throws
1329          SQLException;
1330  /*************************************************************************/  
1331      /**
1332  /**     * This method tests whether or not DDL and DML statements allowed within
1333    * This method tests whether or not subqueries are allowed in exists     * the same transaction.
1334    * expressions.  A fully JDBC compliant driver will always return     *
1335    * <code>true</code>.     * @return <code>true</code> if DDL and DML statements are allowed in the
1336    *     *         same transaction, <code>false</code> otherwise.
1337    * @return <code>true</code> if subqueries are allowed in exists     * @exception SQLException If an error occurs.
1338    * expressions, <code>false</code> otherwise.     */
1339    *    public boolean supportsDataDefinitionAndDataManipulationTransactions()
1340    * @exception SQLException If an error occurs.        throws SQLException;
1341    */  
1342  public abstract boolean    /**
1343  supportsSubqueriesInExists() throws SQLException;     * This method tests whether or not only DML statement are allowed
1344       * inside a transaction.
1345  /*************************************************************************/     *
1346       * @return <code>true</code> if only DML statements are allowed in
1347  /**     *         transactions, <code>false</code> otherwise.
1348    * This method tests whether subqueries are allowed in IN statements.     * @exception SQLException If an error occurs.
1349    * A fully JDBC compliant driver will always return <code>true</code>.     */
1350    *    public boolean supportsDataManipulationTransactionsOnly() throws
1351    * @return <code>true</code> if the driver supports subqueries in IN        SQLException;
1352    * statements, <code>false</code> otherwise.  
1353    *    /**
1354    * @exception SQLException If an error occurs.     * This method tests whether or not a DDL statement will cause the
1355    */     * current transaction to be automatically committed.
1356  public abstract boolean     *
1357  supportsSubqueriesInIns() throws SQLException;     * @return <code>true</code> if DDL causes an immediate transaction commit,
1358       *         <code>false</code> otherwise.
1359  /*************************************************************************/     * @exception SQLException If an error occurs.
1360       */
1361  /**    public boolean dataDefinitionCausesTransactionCommit() throws SQLException;
1362    * This method tests whether or not subqueries are allowed in quantified  
1363    * expressions.  A fully JDBC compliant driver will always return    /**
1364    * <code>true</code>.     * This method tests whether or not DDL statements are ignored in
1365    *     * transactions.
1366    * @return <code>true</code> if subqueries are allowed in quantified     *
1367    * expressions, <code>false</code> otherwise.     * @return <code>true</code> if DDL statements are ignored in transactions,
1368    *     *         <code>false</code> otherwise.
1369    * @exception SQLException If an error occurs.     * @exception SQLException If an error occurs.
1370    */     */
1371  public abstract boolean    public boolean dataDefinitionIgnoredInTransactions() throws SQLException;
1372  supportsSubqueriesInQuantifieds() throws SQLException;  
1373      /**
1374  /*************************************************************************/     * This method returns a list of all the stored procedures matching the
1375       * specified pattern in the given schema and catalog.  This is returned
1376  /**     * a <code>ResultSet</code> with the following columns:
1377    * This method test whether or not correlated subqueries are allowed. A     * <p>
1378    * fully JDBC compliant driver will always return <code>true</code>.     * <ol>
1379    *     * <li>PROCEDURE_CAT - The catalog the procedure is in, which may be
1380    * @return <code>true</code> if correlated subqueries are allowed,     * <code>null</code>.
1381    * <code>false</code> otherwise.     * <li>PROCEDURE_SCHEM - The schema the procedures is in, which may be
1382    *     * <code>null</code>.
1383    * @exception SQLException If an error occurs.     * <li>PROCEDURE_NAME - The name of the procedure.
1384    */     * <li>Unused
1385  public abstract boolean     * <li>Unused
1386  supportsCorrelatedSubqueries() throws SQLException;     * <li>Unused
1387       * <li>REMARKS - A description of the procedure
1388  /*************************************************************************/     * <li>PROCEDURE_TYPE - Indicates the return type of the procedure, which
1389       * is one of the contstants defined in this class
1390  /**     * (<code>procedureResultUnknown</code>, <code>procedureNoResult</code>, or
1391    * This method tests whether or not the UNION statement is supported.     * <code>procedureReturnsResult</code>).
1392    *     * </ol>
1393    * @return <code>true</code> if UNION is supported, <code>false</code>     *
1394    * otherwise.     * @param catalog The name of the catalog to return stored procedured from,
1395    *     *        or "" to return procedures from all catalogs.
1396    * @exception SQLException If an error occurs.     * @param schemaPattern A schema pattern for the schemas to return stored
1397    */     *        procedures from, or "" to return procedures from all schemas.
1398  public abstract boolean     * @param namePattern The pattern of procedures names to return.
1399  supportsUnion() throws SQLException;     * @returns A <code>ResultSet</code> with all the requested procedures.
1400       * @exception SQLException If an error occurs.
1401  /*************************************************************************/     */
1402      public ResultSet getProcedures(String catalog, String schemaPattern, String
1403  /**        procedureNamePattern) throws SQLException;
1404    * This method tests whether or not the UNION ALL statement is supported.  
1405    *    /**
1406    * @return <code>true</code> if UNION ALL is supported, <code>false</code>     * This method returns a list of the parameter and result columns for
1407    * otherwise.     * the requested stored procedures.  This is returned in the form of a
1408    *     * <code>ResultSet</code> with the following columns:
1409    * @exception SQLException If an error occurs.     * <p>
1410    */     * <ol>
1411  public abstract boolean     * <li>PROCEDURE_CAT - The catalog the procedure is in, which may be
1412  supportsUnionAll() throws SQLException;     * <code>null</code>.
1413       * <li>PROCEDURE_SCHEM - The schema the procedures is in, which may be
1414  /*************************************************************************/     * <code>null</code>.
1415       * <li>PROCEDURE_NAME - The name of the procedure.
1416  /**     * <li>COLUMN_NAME - The name of the column
1417    * This method tests whether or not the database supports cursors     * <li>COLUMN_TYPE - The type of the column, which will be one of the
1418    * remaining open across commits.     * contants defined in this class (<code>procedureColumnUnknown</code>,
1419    *     * <code>procedureColumnIn</code>, <code>procedureColumnInOut</code>,
1420    * @return <code>true</code> if cursors can remain open across commits,     * <code>procedureColumnOut</code>, <code>procedureColumnReturn</code>,
1421    * <code>false</code> otherwise.     * or <code>procedureColumnResult</code>).
1422    *     * <li>DATA_TYPE - The SQL type of the column. This is one of the constants
1423    * @exception SQLException If an error occurs.     * defined in <code>Types</code>.
1424    */     * <li>TYPE_NAME - The string name of the data type for this column.
1425  public abstract boolean     * <li>PRECISION - The precision of the column.
1426  supportsOpenCursorsAcrossCommit() throws SQLException;     * <li>LENGTH - The length of the column in bytes
1427       * <li>SCALE - The scale of the column.
1428  /*************************************************************************/     * <li>RADIX - The radix of the column.
1429       * <li>NULLABLE - Whether or not the column is NULLABLE.  This is one of
1430  /**     * the constants defined in this class (<code>procedureNoNulls</code>,
1431    * This method tests whether or not the database supports cursors     * <code>procedureNullable</code>, or <code>procedureNullableUnknown</code>)
1432    * remaining open across rollbacks.     * <li>REMARKS - A description of the column.
1433    *     * </ol>
1434    * @return <code>true</code> if cursors can remain open across rollbacks,     *
1435    * <code>false</code> otherwise.     * @param catalog The name of the catalog to return stored procedured from,
1436    *     *        or "" to return procedures from all catalogs.
1437    * @exception SQLException If an error occurs.     * @param schemaPattern A schema pattern for the schemas to return stored
1438    */     *        procedures from, or "" to return procedures from all schemas.
1439  public abstract boolean     * @param namePattern The pattern of procedures names to return.
1440  supportsOpenCursorsAcrossRollback() throws SQLException;     * @param columnPattern The pattern of column names to return.
1441       * @returns A <code>ResultSet</code> with all the requested procedures.
1442  /*************************************************************************/     * @exception SQLException If an error occurs.
1443       */
1444  /**    public ResultSet getProcedureColumns(String catalog, String schemaPattern,
1445    * This method tests whether or not the database supports statements        String procedureNamePattern, String columnNamePattern) throws
1446    * remaining open across commits.        SQLException;
1447    *  
1448    * @return <code>true</code> if statements can remain open across commits,    /**
1449    * <code>false</code> otherwise.     * This method returns a list of the requested table as a  
1450    *     * <code>ResultSet</code> with the following columns:
1451    * @exception SQLException If an error occurs.     * <p>
1452    */     * <ol>
1453  public abstract boolean     * <li>TABLE_CAT - The catalog the table is in, which may be <code>null</code>.
1454  supportsOpenStatementsAcrossCommit() throws SQLException;     * <li>TABLE_SCHEM - The schema the table is in, which may be <code>null</code>.
1455       * <li>TABLE_NAME - The name of the table.
1456  /*************************************************************************/     * <li>TABLE_TYPE - A string describing the table type.  This will be one
1457       * of the values returned by the <code>getTableTypes()</code> method.
1458  /**     * <li>REMARKS - Comments about the table.
1459    * This method tests whether or not the database supports statements     * </ol>
1460    * remaining open across rollbacks.     *
1461    *     * @param catalog The name of the catalog to return tables from,
1462    * @return <code>true</code> if statements can remain open across rollbacks,     *        or "" to return tables from all catalogs.
1463    * <code>false</code> otherwise.     * @param schemaPattern A schema pattern for the schemas to return tables
1464    *     *        from, or "" to return tables from all schemas.
1465    * @exception SQLException If an error occurs.     * @param namePattern The pattern of table names to return.
1466    */     * @param types The list of table types to include; null returns all types.
1467  public abstract boolean     * @returns A <code>ResultSet</code> with all the requested tables.
1468  supportsOpenStatementsAcrossRollback() throws SQLException;     * @exception SQLException If an error occurs.
1469       */
1470  /*************************************************************************/    public ResultSet getTables(String catalog, String schemaPattern, String
1471          tableNamePattern, String[] types) throws SQLException;
1472  /**  
1473    * This method returns the number of hex characters allowed in an inline    /**
1474    * binary literal.     * This method returns the list of database schemas as a
1475    *     * <code>ResultSet</code>, with one column - TABLE_SCHEM - that is the
1476    * @return The number of hex characters allowed in a binary literal, 0 meaning     * name of the schema.
1477    * either an unknown or unlimited number.     *
1478    *     * @return A <code>ResultSet</code> with all the requested schemas.
1479    * @exception SQLException If an error occurs.     * @exception SQLException If an error occurs.
1480    */     */
1481  public abstract int    public ResultSet getSchemas() throws SQLException;
1482  getMaxBinaryLiteralLength() throws SQLException;  
1483      /**
1484  /*************************************************************************/     * This method returns the list of database catalogs as a
1485       * <code>ResultSet</code> with one column - TABLE_CAT - that is the
1486  /**     * name of the catalog.
1487    * This method returns the maximum length of a character literal.     *
1488    *     * @return A <code>ResultSet</code> with all the requested catalogs.
1489    * @return The maximum length of a character literal.     * @exception SQLException If an error occurs.
1490    *     */
1491    * @exception SQLException If an error occurs.    public ResultSet getCatalogs() throws SQLException;
1492    */  
1493  public abstract int    /**
1494  getMaxCharLiteralLength() throws SQLException;     * This method returns the list of database table types as a
1495       * <code>ResultSet</code> with one column - TABLE_TYPE - that is the
1496  /*************************************************************************/     * name of the table type.
1497       *
1498  /**     * @return A <code>ResultSet</code> with all the requested table types.
1499    * This method returns the maximum length of a column name.     * @exception SQLException If an error occurs.
1500    *     */
1501    * @return The maximum length of a column name.    public ResultSet getTableTypes() throws SQLException;
1502    *  
1503    * @exception SQLException If an error occurs.    /**
1504    */     * This method returns a list of the tables columns for
1505  public abstract int     * the requested tables.  This is returned in the form of a
1506  getMaxColumnNameLength() throws SQLException;     * <code>ResultSet</code> with the following columns:
1507       * <p>
1508  /*************************************************************************/     * <ol>
1509       * <li>TABLE_CAT - The catalog the table is in, which may be
1510  /**     * <code>null</code>.
1511    * This method returns the maximum number of columns in a GROUP BY statement.     * <li>TABLE_SCHEM - The schema the tables is in, which may be
1512    *     * <code>null</code>.
1513    * @return The maximum number of columns in a GROUP BY statement.     * <li>TABLE_NAME - The name of the table.
1514    *     * <li>COLUMN_NAME - The name of the column
1515    * @exception SQLException If an error occurs.     * <li>DATA_TYPE - The SQL type of the column. This is one of the constants
1516    */     * defined in <code>Types</code>.
1517  public abstract int     * <li>TYPE_NAME - The string name of the data type for this column.
1518  getMaxColumnsInGroupBy() throws SQLException;     * <li>COLUMN_SIZE - The size of the column.
1519       * <li>Unused
1520  /*************************************************************************/     * <li>NUM_PREC_RADIX - The radix of the column.
1521       * <li>NULLABLE - Whether or not the column is NULLABLE.  This is one of
1522  /**     * the constants defined in this class (<code>tableNoNulls</code>,
1523    * This method returns the maximum number of columns in an index.     * <code>tableNullable</code>, or <code>tableNullableUnknown</code>)
1524    *     * <li>REMARKS - A description of the column.
1525    * @return The maximum number of columns in an index.     * <li>COLUMN_DEF - The default value for the column, may be <code>null</code>.
1526    *     * <li>SQL_DATA_TYPE - Unused
1527    * @exception SQLException If an error occurs.     * <li>SQL_DATETIME_SUB - Unused
1528    */     * <li>CHAR_OCTET_LENGTH - For character columns, the maximum number of bytes
1529  public abstract int     * in the column.
1530  getMaxColumnsInIndex() throws SQLException;     * <li>ORDINAL_POSITION - The index of the column in the table.
1531       * <li>IS_NULLABLE - "NO" means no, "YES" means maybe, and an empty string
1532  /*************************************************************************/     * means unknown.
1533       * </ol>
1534  /**     *
1535    * This method returns the maximum number of columns in an ORDER BY statement.     * @param catalog The name of the catalog to return table from,
1536    *     * or "" to return tables from all catalogs.
1537    * @return The maximum number of columns in an ORDER BY statement.     * @param schemaPattern A schema pattern for the schemas to return
1538    *     * tables from, or "" to return tables from all schemas.
1539    * @exception SQLException If an error occurs.     * @param namePattern The pattern of tables names to return.
1540    */     * @param columnPattern The pattern of column names to return.
1541  public abstract int     * @returns A <code>ResultSet</code> with all the requested tables.
1542  getMaxColumnsInOrderBy() throws SQLException;     * @exception SQLException If an error occurs.
1543       */
1544  /*************************************************************************/    public ResultSet getColumns(String catalog, String schemaPattern, String
1545          tableNamePattern, String columnNamePattern) throws SQLException;
1546  /**  
1547    * This method returns the maximum number of columns in a SELECT statement.    /**
1548    *     * This method returns the access rights that have been granted to the
1549    * @return The maximum number of columns in a SELECT statement.     * requested columns.  This information is returned as a <code>ResultSet</code>
1550    *     * with the following columns:
1551    * @exception SQLException If an error occurs.     * <p>
1552    */     * <ol>
1553  public abstract int     * <li>TABLE_CAT - The catalog the table is in, which may be
1554  getMaxColumnsInSelect() throws SQLException;     * <code>null</code>.
1555       * <li>TABLE_SCHEM - The schema the tables is in, which may be
1556  /*************************************************************************/     * <code>null</code>.
1557       * <li>TABLE_NAME - The name of the table.
1558  /**     * <li>COLUMN_NAME - The name of the column.
1559    * This method returns the maximum number of columns in a table.     * <li>GRANTOR - The entity that granted the access.
1560    *     * <li>GRANTEE - The entity granted the access.
1561    * @return The maximum number of columns in a table.     * <li>PRIVILEGE - The name of the privilege granted.
1562    *     * <li>IS_GRANTABLE - "YES" if the grantee can grant the privilege to
1563    * @exception SQLException If an error occurs.     * others, "NO" if not, and <code>null</code> if unknown.
1564    */     * </ol>
1565  public abstract int     *
1566  getMaxColumnsInTable() throws SQLException;     * @param catalog The catalog to retrieve information from, or the empty string
1567       *        to return entities not associated with a catalog, or <code>null</code>
1568  /*************************************************************************/     *        to return information from all catalogs.
1569       * @param schema The schema to retrieve information from, or the empty string
1570  /**     *        to return entities not associated with a schema.
1571    * This method returns the maximum number of connections this client     * @param table The table name to return information for.
1572    * can have to the database.     * @param columnPattern A pattern of column names to return information for.
1573    *     * @return A <code>ResultSet</code> with all the requested privileges.
1574    * @return The maximum number of database connections.     * @exception SQLException If an error occurs.
1575    *     */
1576    * @SQLException If an error occurs.    public ResultSet getColumnPrivileges(String catalog, String schema, String
1577    */        table, String columnNamePattern) throws SQLException;
1578  public abstract int  
1579  getMaxConnections() throws SQLException;    /**
1580       * This method returns the access rights that have been granted to the
1581  /*************************************************************************/     * requested tables.  This information is returned as a <code>ResultSet</code>
1582       * with the following columns:
1583  /**     * <p>
1584    * This method returns the maximum length of a cursor name.     * <ol>
1585    *     * <li>TABLE_CAT - The catalog the table is in, which may be
1586    * @return The maximum length of a cursor name.     * <code>null</code>.
1587    *     * <li>TABLE_SCHEM - The schema the tables is in, which may be
1588    * @exception SQLException If an error occurs.     * <code>null</code>.
1589    */     * <li>TABLE_NAME - The name of the table.
1590  public abstract int     * <li>GRANTOR - The entity that granted the access.
1591  getMaxCursorNameLength() throws SQLException;     * <li>GRANTEE - The entity granted the access.
1592       * <li>PRIVILEGE - The name of the privilege granted.
1593  /*************************************************************************/     * <li>IS_GRANTABLE - "YES" if the grantee can grant the privilege to
1594       * others, "NO" if not, and <code>null</code> if unknown.
1595  /**     * </ol>
1596    * This method returns the maximum length of an index.     *
1597    *     * @param catalog The catalog to retrieve information from, or the empty string
1598    * @return The maximum length of an index.     *        to return entities not associated with a catalog, or <code>null</code>
1599    *     *        to return information from all catalogs.
1600    * @exception SQLException If an error occurs.     * @param schema The schema to retrieve information from, or the empty string
1601    */     *        to return entities not associated with a schema.
1602  public abstract int     * @param tablePattern The table name pattern of tables to return
1603  getMaxIndexLength() throws SQLException;     *        information for.
1604       * @return A <code>ResultSet</code> with all the requested privileges.
1605  /*************************************************************************/     * @exception SQLException If an error occurs.
1606       */
1607  /**    public ResultSet getTablePrivileges(String catalog, String schemaPattern,
1608    * This method returns the maximum length of a schema name.        String tableNamePattern) throws SQLException;
1609    *  
1610    * @return The maximum length of a schema name.    /**
1611    *     * This method returns the best set of columns for uniquely identifying
1612    * @exception SQLException If an error occurs.     * a row.  It returns this information as a <code>ResultSet</code> with
1613    */     * the following columns:
1614  public abstract int     * <p>
1615  getMaxSchemaNameLength() throws SQLException;     * <ol>
1616       * <li>SCOPE - The scope of the results returned.  This is one of the
1617  /*************************************************************************/     * constants defined in this class (<code>bestRowTemporary</code>,
1618       * <code>bestRowTransaction</code>, or <code>bestRowSession</code>).
1619  /**     * <li>COLUMN_NAME - The name of the column.
1620    * This method returns the maximum length of a procedure name.     * <li>DATA_TYPE - The SQL type of the column. This is one of the constants
1621    *     * defined in <code>Types</code>.
1622    * @return The maximum length of a procedure name.     * <li>TYPE_NAME - The string name of the data type for this column.
1623    *     * <li>COLUMN_SIZE - The precision of the columns
1624    * @exception SQLException If an error occurs.     * <li>BUFFER_LENGTH - Unused
1625    */     * <li>DECIMAL_DIGITS - The scale of the column.
1626  public abstract int     * <li>PSEUDO_COLUMN - Whether or not the best row identifier is a
1627  getMaxProcedureNameLength() throws SQLException;     * pseudo_column.  This is one of the constants defined in this class
1628       * (<code>bestRowUnknown</code>, <code>bestRowNotPseudo</code>, or
1629  /*************************************************************************/     * <code>bestRowPseudo</code>).
1630       * </ol>
1631  /**     *
1632    * This method returns the maximum length of a catalog name.     * @param catalog The catalog to retrieve information from, or the empty string
1633    *     * to return entities not associated with a catalog, or <code>null</code>
1634    * @return The maximum length of a catalog name.     * to return information from all catalogs.
1635    *     * @param schema The schema to retrieve information from, or the empty string
1636    * @exception SQLException If an error occurs.     * to return entities not associated with a schema.
1637    */     * @param table The table name to return information for.
1638  public abstract int     * @param columnPattern A pattern of column names to return information for.
1639  getMaxCatalogNameLength() throws SQLException;     * @param scope One of the best row id scope constants from this class.
1640       * @param nullable <code>true</code> to include columns that are nullable,
1641  /*************************************************************************/     * <code>false</code> otherwise.
1642       * @return A <code>ResultSet</code> with the best row identifier.
1643  /**     * @exception SQLException If an error occurs.
1644    * This method returns the maximum size of a row in bytes.     */
1645    *    public ResultSet getBestRowIdentifier(String catalog, String schema,
1646    * @return The maximum size of a row.      String table, int scope, boolean nullable) throws SQLException;
1647    *  
1648    * @exception SQLException If an error occurs.    /**
1649    */     * This method returns the set of columns that are automatically updated
1650  public abstract int     * when the row is update. It returns this information as a
1651  getMaxRowSize() throws SQLException;     * <code>ResultSet</code> with the following columns:
1652       * <p>
1653  /*************************************************************************/     * <ol>
1654       * <li>SCOPE - Unused
1655  /**     * <li>COLUMN_NAME - The name of the column.
1656    * This method tests whether or not the maximum row size includes BLOB's     * <li>DATA_TYPE - The SQL type of the column. This is one of the constants
1657    *     * defined in <code>Types</code>.
1658    * @return <code>true</code> if the maximum row size includes BLOB's,     * <li>TYPE_NAME - The string name of the data type for this column.
1659    * <code>false</code> otherwise.     * <li>COLUMN_SIZE - The precision of the columns
1660    *     * <li>BUFFER_LENGTH - Unused
1661    * @exception SQLException If an error occurs.     * <li>DECIMAL_DIGITS - The scale of the column.
1662    */     * <li>PSEUDO_COLUMN - Whether or not the best row identifier is a
1663  public abstract boolean     * pseudo_column.  This is one of the constants defined in this class
1664  doesMaxRowSizeIncludeBlobs() throws SQLException;     * (<code>versionRowUnknown</code>, <code>versionRowNotPseudo</code>, or
1665       * <code>versionRowPseudo</code>).
1666  /*************************************************************************/     * </ol>
1667       *
1668  /**     * @param catalog The catalog to retrieve information from, or the empty string
1669    * This method includes the maximum length of a SQL statement.     *        to return entities not associated with a catalog, or <code>null</code>
1670    *     *        to return information from all catalogs.
1671    * @return The maximum length of a SQL statement.     * @param schema The schema to retrieve information from, or the empty string
1672    *     *        to return entities not associated with a schema.
1673    * @exception SQLException If an error occurs.     * @param table The table name to return information for.
1674    */     * @param columnPattern A pattern of column names to return information for.
1675  public abstract int     * @return A <code>ResultSet</code> with the version columns.
1676  getMaxStatementLength() throws SQLException;     * @exception SQLException If an error occurs.
1677       */
1678  /*************************************************************************/    public ResultSet getVersionColumns(String catalog, String schema,
1679        String table) throws SQLException;
1680  /**  
1681    * This method returns the maximum number of statements that can be    /**
1682    * active at any time.     * This method returns a list of a table's primary key columns.  These
1683    *     * are returned as a <code>ResultSet</code> with the following columns.
1684    * @return The maximum number of statements that can be active at any time.     * <p>
1685    *     * <ol>
1686    * @exception SQLException If an error occurs.     * <li>TABLE_CAT - The catalog of the table, which may be <code>null</code>.
1687    */     * <li>TABLE_SCHEM - The schema of the table, which may be <code>null</code>.
1688  public abstract int     * <li>TABLE_NAME - The name of the table.
1689  getMaxStatements() throws SQLException;     * <li>COLUMN_NAME - The name of the column.
1690       * <li>KEY_SEQ - The sequence number of the column within the primary key.
1691  /*************************************************************************/     * <li>PK_NAME - The name of the primary key, which may be <code>null</code>.
1692       * </ol>
1693  /**     *
1694    * This method returns the maximum length of a table name.     * @param catalog The catalog to retrieve information from, or the empty string
1695    *     *        to return entities not associated with a catalog, or <code>null</code>
1696    * @return The maximum length of a table name.     *        to return information from all catalogs.
1697    *     * @param schema The schema to retrieve information from, or the empty string
1698    * @exception SQLException If an error occurs.     *        to return entities not associated with a schema.
1699    */     * @param table The table name to return information for.
1700  public abstract int     * @param columnPattern A pattern of column names to return information for.
1701  getMaxTableNameLength() throws SQLException;     * @return A <code>ResultSet</code> with the primary key columns.
1702       * @exception SQLException If an error occurs.
1703  /*************************************************************************/     */
1704      public ResultSet getPrimaryKeys(String catalog, String schema, String table)
1705  /**        throws SQLException;
1706    * This method returns the maximum number of tables that may be referenced  
1707    * in a SELECT statement.    /**
1708    *     * This method returns a list of the table's foreign keys.  These are
1709    * @return The maximum number of tables allowed in a SELECT statement.     * returned as a <code>ResultSet</code> with the following columns:
1710    *     * <p>
1711    * @exception SQLException If an error occurs.     * <ol>
1712    */     * <li>PKTABLE_CAT - The catalog of the table the key was imported from.
1713  public abstract int     * <li>PKTABLE_SCHEM - The schema of the table the key was imported from.
1714  getMaxTablesInSelect() throws SQLException;     * <li>PKTABLE_NAME - The name of the table the key was imported from.
1715       * <li>PKCOLUMN_NAME - The name of the column that was imported.
1716  /*************************************************************************/     * <li>FKTABLE_CAT - The foreign key catalog name.
1717       * <li>FKTABLE_SCHEM - The foreign key schema name.
1718  /**     * <li>FKTABLE_NAME - The foreign key table name.
1719    * This method returns the maximum length of a user name.     * <li>FKCOLUMN_NAME - The foreign key column name.
1720    *     * <li>KEY_SEQ - The sequence number of the column within the foreign key.
1721    * @return The maximum length of a user name.     * <li>UPDATE_RULE - How the foreign key behaves when the primary key is
1722    *     * updated.  This is one of the constants defined in this class
1723    * @exception SQLException If an error occurs.     * (<code>importedNoAction</code>, <code>importedKeyCascade</code>,
1724    */     * <code>importedKeySetNull</code>, <code>importedKeySetDefault</code>, or
1725  public abstract int     * <code>importedKeyRestrict</code>).
1726  getMaxUserNameLength() throws SQLException;     * <li>DELETE_RULE - How the foreign key behaves when the primary key is
1727       * deleted.  This is one of the constants defined in this class
1728  /*************************************************************************/     * (<code>importedNoAction</code>, <code>importedKeyCascade</code>,
1729       * <code>importedKeySetNull</code>, or <code>importedKeySetDefault</code>)
1730  /**     * <li>FK_NAME - The name of the foreign key.
1731    * This method returns the default transaction isolation level of the     * <li>PK_NAME - The name of the primary key.
1732    * database.     * <li>DEFERRABILITY - The deferrability value.  This is one of the
1733    *     * constants defined in this table (<code>importedKeyInitiallyDeferred</code>,
1734    * @return The default transaction isolation level of the database.     * <code>importedKeyInitiallyImmediate</code>, or
1735    *     * <code>importedKeyNotDeferrable</code>).
1736    * @exception SQLException If an error occurs.     * </ol>
1737    *     *
1738    * @see Connection     * @param catalog The catalog to retrieve information from, or the empty string
1739    */     *        to return entities not associated with a catalog, or <code>null</code>
1740  public abstract int     *        to return information from all catalogs.
1741  getDefaultTransactionIsolation() throws SQLException;     * @param schema The schema to retrieve information from, or the empty string
1742       *        to return entities not associated with a schema.
1743  /*************************************************************************/     * @param table The table name to return information for.
1744       *
1745  /**     * @return A <code>ResultSet</code> with the foreign key columns.
1746    * This method tests whether or not the database supports transactions.     *
1747    *     * @exception SQLException If an error occurs.
1748    * @return <code>true</code> if the database supports transactions,     */
1749    * <code>false</code> otherwise.    public ResultSet getImportedKeys(String catalog, String schema,
1750    *      String table) throws SQLException;
1751    * @exception SQLException If an error occurs.  
1752    */    /**
1753  public abstract boolean     * This method returns a list of the table's which use this table's
1754  supportsTransactions() throws SQLException;     * primary key as a foreign key.  The information is
1755       * returned as a <code>ResultSet</code> with the following columns:
1756  /*************************************************************************/     * <p>
1757       * <ol>
1758  /**     * <li>PKTABLE_CAT - The catalog of the table the key was imported from.
1759    * This method tests whether or not the database supports the specified     * <li>PKTABLE_SCHEM - The schema of the table the key was imported from.
1760    * transaction isolation level.     * <li>PKTABLE_NAME - The name of the table the key was imported from.
1761    *     * <li>PKCOLUMN_NAME - The name of the column that was imported.
1762    * @param level The transaction isolation level.     * <li>FKTABLE_CAT - The foreign key catalog name.
1763    *     * <li>FKTABLE_SCHEM - The foreign key schema name.
1764    * @return <code>true</code> if the specified transaction isolation level     * <li>FKTABLE_NAME - The foreign key table name.
1765    * is supported, <code>false</code> otherwise.     * <li>FKCOLUMN_NAME - The foreign key column name.
1766    *     * <li>KEY_SEQ - The sequence number of the column within the foreign key.
1767    * @exception SQLException If an error occurs.     * <li>UPDATE_RULE - How the foreign key behaves when the primary key is
1768    */     * updated.  This is one of the constants defined in this class
1769  public abstract boolean     * (<code>importedNoAction</code>, <code>importedKeyCascade</code>,
1770  supportsTransactionIsolationLevel(int level) throws SQLException;     * <code>importedKeySetNull</code>, <code>importedKeySetDefault</code>, or
1771       * <code>importedKeyRestrict</code>).
1772  /*************************************************************************/     * <li>DELETE_RULE - How the foreign key behaves when the primary key is
1773       * deleted.  This is one of the constants defined in this class
1774  /**     * (<code>importedNoAction</code>, <code>importedKeyCascade</code>,
1775    * This method tests whether or not DDL and DML statements allowed within     * <code>importedKeySetNull</code>, or <code>importedKeySetDefault</code>)
1776    * the same transaction.     * <li>FK_NAME - The name of the foreign key.
1777    *     * <li>PK_NAME - The name of the primary key.
1778    * @return <code>true</code> if DDL and DML statements are allowed in the     * <li>DEFERRABILITY - The deferrability value.  This is one of the
1779    * same transaction, <code>false</code> otherwise.     * constants defined in this table (<code>importedKeyInitiallyDeferred</code>,
1780    *     * <code>importedKeyInitiallyImmediate</code>, or
1781    * @exception SQLException If an error occurs.     * <code>importedKeyNotDeferrable</code>).
1782    */     * </ol>
1783  public abstract boolean     *
1784  supportsDataDefinitionAndDataManipulationTransactions() throws SQLException;     * @param catalog The catalog to retrieve information from, or the empty string
1785       *        to return entities not associated with a catalog, or <code>null</code>
1786  /*************************************************************************/     *        to return information from all catalogs.
1787       * @param schema The schema to retrieve information from, or the empty string
1788  /**     *        to return entities not associated with a schema.
1789    * This method tests whether or not only DML statement are allowed     * @param table The table name to return information for.
1790    * inside a transaction.     * @return A <code>ResultSet</code> with the requested information
1791    *     * @exception SQLException If an error occurs.
1792    * @return <code>true</code> if only DML statements are allowed in     */
1793    * transactions, <code>false</code> otherwise.    public ResultSet getExportedKeys(String catalog, String schema,
1794    *      String table) throws SQLException;
1795    * @exception SQLException If an error occurs.  
1796    */    /**
1797  public abstract boolean     * This method returns a description of how one table imports another
1798  supportsDataManipulationTransactionsOnly() throws SQLException;     * table's primary key as a foreign key.  The information is
1799       * returned as a <code>ResultSet</code> with the following columns:
1800  /*************************************************************************/     * <p>
1801       * <ol>
1802  /**     * <li>PKTABLE_CAT - The catalog of the table the key was imported from.
1803    * This method tests whether or not a DDL statement will cause the     * <li>PKTABLE_SCHEM - The schema of the table the key was imported from.
1804    * current transaction to be automatically committed.     * <li>PKTABLE_NAME - The name of the table the key was imported from.
1805    *     * <li>PKCOLUMN_NAME - The name of the column that was imported.
1806    * @return <code>true</code> if DDL causes an immediate transaction commit,     * <li>FKTABLE_CAT - The foreign key catalog name.
1807    * <code>false</code> otherwise.     * <li>FKTABLE_SCHEM - The foreign key schema name.
1808    *     * <li>FKTABLE_NAME - The foreign key table name.
1809    * @exception SQLException If an error occurs.     * <li>FKCOLUMN_NAME - The foreign key column name.
1810    */     * <li>KEY_SEQ - The sequence number of the column within the foreign key.
1811  public abstract boolean     * <li>UPDATE_RULE - How the foreign key behaves when the primary key is
1812  dataDefinitionCausesTransactionCommit() throws SQLException;     * updated.  This is one of the constants defined in this class
1813       * (<code>importedNoAction</code>, <code>importedKeyCascade</code>,
1814  /*************************************************************************/     * <code>importedKeySetNull</code>, <code>importedKeySetDefault</code>, or
1815       * <code>importedKeyRestrict</code>).
1816  /**     * <li>DELETE_RULE - How the foreign key behaves when the primary key is
1817    * This method tests whether or not DDL statements are ignored in     * deleted.  This is one of the constants defined in this class
1818    * transactions.     * (<code>importedNoAction</code>, <code>importedKeyCascade</code>,
1819    *     * <code>importedKeySetNull</code>, or <code>importedKeySetDefault</code>)
1820    * @return <code>true</code> if DDL statements are ignored in transactions,     * <li>FK_NAME - The name of the foreign key.
1821    * <code>false</code> otherwise.     * <li>PK_NAME - The name of the primary key.
1822    *     * <li>DEFERRABILITY - The deferrability value.  This is one of the
1823    * @exception SQLException If an error occurs.     * constants defined in this table (<code>importedKeyInitiallyDeferred</code>,
1824    */     * <code>importedKeyInitiallyImmediate</code>, or
1825  public abstract boolean     * <code>importedKeyNotDeferrable</code>).
1826  dataDefinitionIgnoredInTransactions() throws SQLException;     * </ol>
1827       *
1828  /*************************************************************************/     * @param primCatalog The catalog to retrieve information from, or the empty string
1829       *        to return entities not associated with a catalog, or <code>null</code>
1830  /**     *        to return information from all catalogs, on the exporting side.
1831    * This method returns a list of all the stored procedures matching the     * @param primSchema The schema to retrieve information from, or the empty string
1832    * specified pattern in the given schema and catalog.  This is returned     *        to return entities not associated with a schema, on the exporting side.
1833    * a <code>ResultSet</code> with the following columns:     * @param primTable The table name to return information for, on the exporting
1834    * <p>     *        side.
1835    * <ol>     * @param forCatalog The catalog to retrieve information from, or the empty string
1836    * <li>PROCEDURE_CAT - The catalog the procedure is in, which may be     *        to return entities not associated with a catalog, or <code>null</code>
1837    * <code>null</code>.     *        to return information from all catalogs, on the importing side.
1838    * <li>PROCEDURE_SCHEM - The schema the procedures is in, which may be     * @param forSchema The schema to retrieve information from, or the empty string
1839    * <code>null</code>.     *        to return entities not associated with a schema on the importing side.
1840    * <li>PROCEDURE_NAME - The name of the procedure.     * @param forTable The table name to return information for on the importing
1841    * <li>Unused     *        side.
1842    * <li>Unused     * @return A <code>ResultSet</code> with the requested information
1843    * <li>Unused     * @exception SQLException If an error occurs.
1844    * <li>REMARKS - A description of the procedure     */
1845    * <li>PROCEDURE_TYPE - Indicates the return type of the procedure, which    public ResultSet getCrossReference(String primaryCatalog, String
1846    * is one of the contstants defined in this class      primarySchema, String primaryTable, String foreignCatalog, String
1847    * (<code>procedureResultUnknown</code>, <code>procedureNoResult</code>, or      foreignSchema, String foreignTable) throws SQLException;
1848    * <code>procedureReturnsResult</code>).  
1849    * </ol>    /**
1850    *     * This method returns a list of the SQL types supported by this
1851    * @param catalog The name of the catalog to return stored procedured from,     * database.  The information is returned as a <code>ResultSet</code>
1852    * or "" to return procedures from all catalogs.     * with the following columns:
1853    * @param schemaPattern A schema pattern for the schemas to return stored     * <p>
1854    * procedures from, or "" to return procedures from all schemas.     * <ol>
1855    * @param namePattern The pattern of procedures names to return.     * <li>TYPE_NAME - The name of the data type.
1856    *     * <li>DATA_TYPE - A data type constant from <code>Types</code> for this
1857    * @returns A <code>ResultSet</code> with all the requested procedures.     * type.
1858    *     * <li>PRECISION - The maximum precision of this type.
1859    * @exception SQLException If an error occurs.     * <li>LITERAL_PREFIX - Prefix value used to quote a literal, which may be
1860    */     * <code>null</code>.
1861  public abstract ResultSet     * <li>LITERAL_SUFFIX - Suffix value used to quote a literal, which may be
1862  getProcedures(String catalog, String schemaPattern, String namePattern)     * <code>null</code>.
1863                throws SQLException;     * <li>CREATE_PARAMS - The parameters used to create the type, which may be
1864       * <code>null</code>.
1865  /*************************************************************************/     * <li>NULLABLE - Whether or not this type supports NULL values.  This will
1866       * be one of the constants defined in this interface
1867  /**     * (<code>typeNoNulls</code>, <code>typeNullable</code>, or
1868    * This method returns a list of the parameter and result columns for     * <code>typeNullableUnknown</code>).
1869    * the requested stored procedures.  This is returned in the form of a     * <li>CASE_SENSITIVE - Whether or not the value is case sensitive.
1870    * <code>ResultSet</code> with the following columns:     * <li>SEARCHABLE - Whether or not "LIKE" expressions are supported in
1871    * <p>     * WHERE clauses for this type.  This will be one of the constants defined
1872    * <ol>     * in this interface (<code>typePredNone</code>, <code>typePredChar</code>,
1873    * <li>PROCEDURE_CAT - The catalog the procedure is in, which may be     * <code>typePredBasic</code>, or <code>typeSearchable</code>).
1874    * <code>null</code>.     * <li>UNSIGNED_ATTRIBUTE - Is the value of this type unsigned.
1875    * <li>PROCEDURE_SCHEM - The schema the procedures is in, which may be     * <li>FIXED_PREC_SCALE - Whether or not this type can be used for money.
1876    * <code>null</code>.     * <li>AUTO_INCREMENT - Whether or not this type supports auto-incrementing.
1877    * <li>PROCEDURE_NAME - The name of the procedure.     * <li>LOCAL_TYPE_NAME - A localized name for this data type.
1878    * <li>COLUMN_NAME - The name of the column     * <li>MINIMUM_SCALE - The minimum scale supported by this type.
1879    * <li>COLUMN_TYPE - The type of the column, which will be one of the     * <li>MAXIMUM_SCALE - The maximum scale supported by this type.
1880    * contants defined in this class (<code>procedureColumnUnknown</code>,     * <li>SQL_DATA_TYPE - Unused.
1881    * <code>procedureColumnIn</code>, <code>procedureColumnInOut</code>,     * <li>SQL_DATETIME_SUB - Unused.
1882    * <code>procedureColumnOut</code>, <code>procedureColumnReturn</code>,     * <li>NUM_PREC_RADIX - The radix of this data type.
1883    * or <code>procedureColumnResult</code>).     * </ol>
1884    * <li>DATA_TYPE - The SQL type of the column. This is one of the constants     *
1885    * defined in <code>Types</code>.     * @return A <code>ResultSet</code> with the list of available data types.
1886    * <li>TYPE_NAME - The string name of the data type for this column.     * @exception SQLException If an error occurs.
1887    * <li>PRECISION - The precision of the column.     */
1888    * <li>LENGTH - The length of the column in bytes    public ResultSet getTypeInfo() throws SQLException;
1889    * <li>SCALE - The scale of the column.  
1890    * <li>RADIX - The radix of the column.    /**
1891    * <li>NULLABLE - Whether or not the column is NULLABLE.  This is one of     * This method returns information about a tables indices and statistics.
1892    * the constants defined in this class (<code>procedureNoNulls</code>,     * It is returned as a <code>ResultSet</code> with the following columns:
1893    * <code>procedureNullable</code>, or <code>procedureNullableUnknown</code>)     * <p>
1894    * <li>REMARKS - A description of the column.     * <ol>
1895    * </ol>     * <li>TABLE_CAT - The catalog of the table, which may be <code>null</code>.
1896    *     * <li>TABLE_SCHEM - The schema of the table, which may be <code>null</code>.
1897    * @param catalog The name of the catalog to return stored procedured from,     * <li>TABLE_NAME - The name of the table.
1898    * or "" to return procedures from all catalogs.     * <li>NON_UNIQUE - Are index values non-unique?
1899    * @param schemaPattern A schema pattern for the schemas to return stored     * <li>INDEX_QUALIFIER The index catalog, which may be <code>null</code>
1900    * procedures from, or "" to return procedures from all schemas.     * <li>INDEX_NAME - The name of the index.
1901    * @param namePattern The pattern of procedures names to return.     * <li>TYPE - The type of index, which will be one of the constants defined
1902    * @param columnPattern The pattern of column names to return.     * in this interface (<code>tableIndexStatistic</code>,
1903    *     * <code>tableIndexClustered</code>, <code>tableIndexHashed</code>, or
1904    * @returns A <code>ResultSet</code> with all the requested procedures.     * <code>tableIndexOther</code>).
1905    *     * <li>ORDINAL_POSITION - The sequence number of this column in the index.
1906    * @exception SQLException If an error occurs.     * This will be 0 when the index type is <code>tableIndexStatistic</code>.
1907    */     * <li>COLUMN_NAME - The name of this column in the index.
1908  public abstract ResultSet     * <li>ASC_OR_DESC - "A" for an ascending sort sequence, "D" for a
1909  getProcedureColumns(String catalog, String schemaPattern, String namePattern,     * descending sort sequence or <code>null</code> if a sort sequence is not
1910                      String columnPattern) throws SQLException;     * supported.
1911       * <li>CARDINALITY - The number of unique rows in the index, or the number
1912  /*************************************************************************/     * of rows in the table if the index type is <code>tableIndexStatistic</code>.
1913       * <li>PAGES - The number of pages used for the index, or the number of pages
1914  /**     * in the table if the index type is <code>tableIndexStatistic</code>.
1915    * This method returns a list of the requested table as a       * <li>FILTER_CONDITION - The filter condition for this index, which may be
1916    * <code>ResultSet</code> with the following columns:     * <code>null</code>.
1917    * <p>     * </ol>
1918    * <ol>     *
1919    * <li>TABLE_CAT - The catalog the table is in, which may be <code>null</code>.     * @param catalog The catalog to retrieve information from, or the empty string
1920    * <li>TABLE_SCHEM - The schema the table is in, which may be <code>null</code>.     *        to return entities not associated with a catalog, or
1921    * <li>TABLE_NAME - The name of the table.     *        <code>null</code> to return information from all catalogs.
1922    * <li>TABLE_TYPE - A string describing the table type.  This will be one     * @param schema The schema to retrieve information from, or the empty string
1923    * of the values returned by the <code>getTableTypes()</code> method.     *        to return entities not associated with a schema.
1924    * <li>REMARKS - Comments about the table.     * @param table The table name to return information for.
1925    * </ol>     * @param unique <code>true</code> to return only unique indexes,
1926    *     *        <code>false</code> otherwise.
1927    * @param catalog The name of the catalog to return tables from,     * @param approx <code>true</code> if data values can be approximations,
1928    * or "" to return tables from all catalogs.     *        <code>false</code> otherwise.
1929    * @param schemaPattern A schema pattern for the schemas to return tables     * @return A <code>ResultSet</code> with the requested index information
1930    * from, or "" to return tables from all schemas.     * @exception SQLException If an error occurs.
1931    * @param namePattern The pattern of table names to return.     */
1932    * @param types The list of table types to include; null returns all types.    public ResultSet getIndexInfo(String catalog, String schema, String table,
1933    *      boolean unique, boolean approximate) throws SQLException;
1934    * @returns A <code>ResultSet</code> with all the requested tables.  
1935    *    /**
1936    * @exception SQLException If an error occurs.     * This method tests whether or not the datbase supports the specified
1937    */     * result type.
1938  public abstract ResultSet     *
1939  getTables(String catalog, String schemaPattern, String namePattern,     * @param type The desired result type, which is one of the constants
1940            String types[]) throws SQLException;     * defined in <code>ResultSet</code>.
1941       *
1942  /*************************************************************************/     * @return <code>true</code> if the result set type is supported,
1943       * <code>false</code> otherwise.
1944  /**     *
1945    * This method returns the list of database schemas as a     * @exception SQLException If an error occurs.
1946    * <code>ResultSet</code>, with one column - TABLE_SCHEM - that is the     *
1947    * name of the schema.     * @see ResultSet
1948    *     */
1949    * @return A <code>ResultSet</code> with all the requested schemas.    public boolean supportsResultSetType(int type) throws SQLException;
1950    *  
1951    * @exception SQLException If an error occurs.    /**
1952    */     * This method tests whether the specified result set type and result set
1953  public abstract ResultSet     * concurrency type are supported by the database.
1954  getSchemas() throws SQLException;     *
1955       * @param type The desired result type, which is one of the constants
1956  /*************************************************************************/     *        defined in <code>ResultSet</code>.
1957       * @param concur The desired concurrency type, which is one of the constants
1958  /**     *        defined in <code>ResultSet</code>.
1959    * This method returns the list of database catalogs as a     * @return <code>true</code> if the result set type is supported,
1960    * <code>ResultSet</code> with one column - TABLE_CAT - that is the     *         <code>false</code> otherwise.
1961    * name of the catalog.     * @exception SQLException If an error occurs.
1962    *     * @see ResultSet
1963    * @return A <code>ResultSet</code> with all the requested catalogs.     */
1964    *    public boolean supportsResultSetConcurrency(int type, int concurrency)
1965    * @exception SQLException If an error occurs.        throws SQLException;
1966    */  
1967  public abstract ResultSet    /**
1968  getCatalogs() throws SQLException;     * This method tests whether or not the specified result set type sees its
1969       * own updates.
1970  /*************************************************************************/     *
1971       * @param type The desired result type, which is one of the constants
1972  /**     *        defined in <code>ResultSet</code>.
1973    * This method returns the list of database table types as a     * @return <code>true</code> if the result set type sees its own updates,
1974    * <code>ResultSet</code> with one column - TABLE_TYPE - that is the     *         <code>false</code> otherwise.
1975    * name of the table type.     * @exception SQLException If an error occurs.
1976    *     * @see ResultSet
1977    * @return A <code>ResultSet</code> with all the requested table types.     */
1978    *    public boolean ownUpdatesAreVisible(int type) throws SQLException;
1979    * @exception SQLException If an error occurs.  
1980    */   /**
1981  public abstract ResultSet     * This method tests whether or not the specified result set type sees its
1982  getTableTypes() throws SQLException;     * own deletes.
1983       *
1984  /*************************************************************************/     * @param type The desired result type, which is one of the constants
1985       *        defined in <code>ResultSet</code>.
1986  /**     * @return <code>true</code> if the result set type sees its own deletes,
1987    * This method returns a list of the tables columns for     *         <code>false</code> otherwise.
1988    * the requested tables.  This is returned in the form of a     * @exception SQLException If an error occurs.
1989    * <code>ResultSet</code> with the following columns:     * @see ResultSet
1990    * <p>     */
1991    * <ol>    public boolean ownDeletesAreVisible(int type) throws SQLException;
1992    * <li>TABLE_CAT - The catalog the table is in, which may be  
1993    * <code>null</code>.    /**
1994    * <li>TABLE_SCHEM - The schema the tables is in, which may be     * This method tests whether or not the specified result set type sees its
1995    * <code>null</code>.     * own inserts.
1996    * <li>TABLE_NAME - The name of the table.     *
1997    * <li>COLUMN_NAME - The name of the column     * @param type The desired result type, which is one of the constants
1998    * <li>DATA_TYPE - The SQL type of the column. This is one of the constants     *        defined in <code>ResultSet</code>.
1999    * defined in <code>Types</code>.     * @return <code>true</code> if the result set type sees its own inserts,
2000    * <li>TYPE_NAME - The string name of the data type for this column.     *         <code>false</code> otherwise.
2001    * <li>COLUMN_SIZE - The size of the column.     * @exception SQLException If an error occurs.
2002    * <li>Unused     * @see ResultSet
2003    * <li>NUM_PREC_RADIX - The radix of the column.     */
2004    * <li>NULLABLE - Whether or not the column is NULLABLE.  This is one of    public boolean ownInsertsAreVisible(int type) throws SQLException;
2005    * the constants defined in this class (<code>tableNoNulls</code>,  
2006    * <code>tableNullable</code>, or <code>tableNullableUnknown</code>)    /**
2007    * <li>REMARKS - A description of the column.     * This method tests whether or not the specified result set type sees
2008    * <li>COLUMN_DEF - The default value for the column, may be <code>null</code>.     * updates committed by others.
2009    * <li>SQL_DATA_TYPE - Unused     *
2010    * <li>SQL_DATETIME_SUB - Unused     * @param type The desired result type, which is one of the constants
2011    * <li>CHAR_OCTET_LENGTH - For character columns, the maximum number of bytes     *        defined in <code>ResultSet</code>.
2012    * in the column.     * @return <code>true</code> if the result set type sees other updates,
2013    * <li>ORDINAL_POSITION - The index of the column in the table.     *         <code>false</code> otherwise.
2014    * <li>IS_NULLABLE - "NO" means no, "YES" means maybe, and an empty string     * @exception SQLException If an error occurs.
2015    * means unknown.     * @see ResultSet
2016    * </ol>     */
2017    *    public boolean othersUpdatesAreVisible(int type) throws SQLException;
2018    * @param catalog The name of the catalog to return table from,  
2019    * or "" to return tables from all catalogs.    /**
2020    * @param schemaPattern A schema pattern for the schemas to return     * This method tests whether or not the specified result set type sees
2021    * tables from, or "" to return tables from all schemas.     * deletes committed by others.
2022    * @param namePattern The pattern of tables names to return.     *
2023    * @param columnPattern The pattern of column names to return.     * @param type The desired result type, which is one of the constants
2024    *     *        defined in <code>ResultSet</code>.
2025    * @returns A <code>ResultSet</code> with all the requested tables.     * @return <code>true</code> if the result set type sees other deletes,
2026    *     *         <code>false</code> otherwise.
2027    * @exception SQLException If an error occurs.     * @exception SQLException If an error occurs.
2028    */     * @see ResultSet
2029  public abstract ResultSet     */
2030  getColumns(String catalog, String schemaPattern, String namePattern,    public boolean othersDeletesAreVisible(int type) throws SQLException;
2031             String columnPattern) throws SQLException;  
2032      /**
2033  /*************************************************************************/     * This method tests whether or not the specified result set type sees
2034       * inserts committed by others.
2035  /**     *
2036    * This method returns the access rights that have been granted to the     * @param type The desired result type, which is one of the constants
2037    * requested columns.  This information is returned as a <code>ResultSet</code>     *        defined in <code>ResultSet</code>.
2038    * with the following columns:     * @return <code>true</code> if the result set type sees other inserts,
2039    * <p>     *         <code>false</code> otherwise.
2040    * <ol>     * @exception SQLException If an error occurs.
2041    * <li>TABLE_CAT - The catalog the table is in, which may be     * @see ResultSet
2042    * <code>null</code>.     */
2043    * <li>TABLE_SCHEM - The schema the tables is in, which may be    public boolean othersInsertsAreVisible(int type) throws SQLException;
2044    * <code>null</code>.  
2045    * <li>TABLE_NAME - The name of the table.    /**
2046    * <li>COLUMN_NAME - The name of the column.     * This method tests whether or not the specified result set type can detect
2047    * <li>GRANTOR - The entity that granted the access.     * a visible update by calling the <code>rowUpdated</code> method.
2048    * <li>GRANTEE - The entity granted the access.     *
2049    * <li>PRIVILEGE - The name of the privilege granted.     * @param type The desired result type, which is one of the constants
2050    * <li>IS_GRANTABLE - "YES" if the grantee can grant the privilege to     *        defined in <code>ResultSet</code>.
2051    * others, "NO" if not, and <code>null</code> if unknown.     * @return <code>true</code> if the result set type can detect visible updates
2052    * </ol>     *         using <code>rowUpdated</code>, <code>false</code> otherwise.
2053    *     * @exception SQLException If an error occurs.
2054    * @param catalog The catalog to retrieve information from, or the empty string     * @see ResultSet
2055    * to return entities not associated with a catalog, or <code>null</code>     */
2056    * to return information from all catalogs.    public boolean updatesAreDetected(int type) throws SQLException;
2057    * @param schema The schema to retrieve information from, or the empty string  
2058    * to return entities not associated with a schema.    /**
2059    * @param table The table name to return information for.     * This method tests whether or not the specified result set type can detect
2060    * @param columnPattern A pattern of column names to return information for.     * a visible delete by calling the <code>rowUpdated</code> method.
2061    *     *
2062    * @return A <code>ResultSet</code> with all the requested privileges.     * @param type The desired result type, which is one of the constants
2063    *     *        defined in <code>ResultSet</code>.
2064    * @exception SQLException If an error occurs.     * @return <code>true</code> if the result set type can detect visible deletes
2065    */     *         using <code>rowUpdated</code>, <code>false</code> otherwise.
2066  public abstract ResultSet     * @exception SQLException If an error occurs.
2067  getColumnPrivileges(String catalog, String schema, String table,     * @see ResultSet
2068                      String columnPattern) throws SQLException;     */
2069      public boolean deletesAreDetected(int type) throws SQLException;
2070  /*************************************************************************/    
2071      /**
2072  /**     * This method tests whether or not the specified result set type can detect
2073    * This method returns the access rights that have been granted to the     * a visible insert by calling the <code>rowUpdated</code> method.
2074    * requested tables.  This information is returned as a <code>ResultSet</code>     *
2075    * with the following columns:     * @param type The desired result type, which is one of the constants
2076    * <p>     *        defined in <code>ResultSet</code>.
2077    * <ol>     * @return <code>true</code> if the result set type can detect visible inserts
2078    * <li>TABLE_CAT - The catalog the table is in, which may be     *         using <code>rowUpdated</code>, <code>false</code> otherwise.
2079    * <code>null</code>.     * @exception SQLException If an error occurs.
2080    * <li>TABLE_SCHEM - The schema the tables is in, which may be     * @see ResultSet
2081    * <code>null</code>.     */
2082    * <li>TABLE_NAME - The name of the table.    public boolean insertsAreDetected(int type) throws SQLException;
2083    * <li>GRANTOR - The entity that granted the access.  
2084    * <li>GRANTEE - The entity granted the access.    /**
2085    * <li>PRIVILEGE - The name of the privilege granted.     * This method tests whether or not the database supports batch updates.
2086    * <li>IS_GRANTABLE - "YES" if the grantee can grant the privilege to     *
2087    * others, "NO" if not, and <code>null</code> if unknown.     * @return <code>true</code> if batch updates are supported,
2088    * </ol>     *         <code>false</code> otherwise.
2089    *     * @exception SQLException If an error occurs.
2090    * @param catalog The catalog to retrieve information from, or the empty string     */
2091    * to return entities not associated with a catalog, or <code>null</code>    public boolean supportsBatchUpdates() throws SQLException;
2092    * to return information from all catalogs.  
2093    * @param schema The schema to retrieve information from, or the empty string    /**
2094    * to return entities not associated with a schema.     * This method returns the list of user defined data types in use.  These
2095    * @param tablePattern The table name pattern of tables to return     * are returned as a <code>ResultSet</code> with the following columns:
2096    * information for.     * <p>
2097    *     * <ol>
2098    * @return A <code>ResultSet</code> with all the requested privileges.     * <li>TYPE_CAT - The catalog name, which may be <code>null</code>.
2099    *     * <li>TYPE_SCEHM - The schema name, which may be <code>null</code>.
2100    * @exception SQLException If an error occurs.     * <li>TYPE_NAME - The user defined data type name.
2101    */     * <li>CLASS_NAME - The Java class name this type maps to.
2102  public abstract ResultSet     * <li>DATA_TYPE - A type identifier from <code>Types</code> for this type.
2103  getTablePrivileges(String catalog, String schema, String table)     * This will be one of <code>JAVA_OBJECT</code>, <code>STRUCT</code>, or
2104                     throws SQLException;     * <code>DISTINCT</code>.
2105       * <li>REMARKS - Comments about this data type.
2106  /*************************************************************************/     * </ol>
2107       *
2108  /**     * @param catalog The catalog to retrieve information from, or the empty string
2109    * This method returns the best set of columns for uniquely identifying     *        to return entities not associated with a catalog, or <code>null</code>
2110    * a row.  It returns this information as a <code>ResultSet</code> with     *        to return information from all catalogs.
2111    * the following columns:     * @param schema The schema to retrieve information from, or the empty string
2112    * <p>     *        to return entities not associated with a schema.
2113    * <ol>     * @param typePattern The type name pattern to match.
2114    * <li>SCOPE - The scope of the results returned.  This is one of the     * @param types The type identifier patterns (from <code>Types</code>) to
2115    * constants defined in this class (<code>bestRowTemporary</code>,     *        match.
2116    * <code>bestRowTransaction</code>, or <code>bestRowSession</code>).     * @return A <code>ResultSet</code> with the requested type information
2117    * <li>COLUMN_NAME - The name of the column.     * @exception SQLException If an error occurs.
2118    * <li>DATA_TYPE - The SQL type of the column. This is one of the constants     */
2119    * defined in <code>Types</code>.    public ResultSet getUDTs(String catalog, String schemaPattern, String
2120    * <li>TYPE_NAME - The string name of the data type for this column.        typeNamePattern, int[] types) throws SQLException;
2121    * <li>COLUMN_SIZE - The precision of the columns  
2122    * <li>BUFFER_LENGTH - Unused    /**
2123    * <li>DECIMAL_DIGITS - The scale of the column.     * This method returns the <code>Connection</code> object that was used
2124    * <li>PSEUDO_COLUMN - Whether or not the best row identifier is a     * to generate the metadata in this object.
2125    * pseudo_column.  This is one of the constants defined in this class     *
2126    * (<code>bestRowUnknown</code>, <code>bestRowNotPseudo</code>, or     * @return The connection for this object.
2127    * <code>bestRowPseudo</code>).     * @exception SQLException If an error occurs.
2128    * </ol>     */
2129    *    public Connection getConnection() throws SQLException;
2130    * @param catalog The catalog to retrieve information from, or the empty string  
2131    * to return entities not associated with a catalog, or <code>null</code>    /**
2132    * to return information from all catalogs.     * @since 1.4
2133    * @param schema The schema to retrieve information from, or the empty string     */
2134    * to return entities not associated with a schema.    public boolean supportsSavepoints() throws SQLException;
2135    * @param table The table name to return information for.  
2136    * @param columnPattern A pattern of column names to return information for.    /**
2137    * @param scope One of the best row id scope constants from this class.     * @since 1.4
2138    * @param nullable <code>true</code> to include columns that are nullable,     */
2139    * <code>false</code> otherwise.    public boolean supportsNamedParameters() throws SQLException;
2140    *  
2141    * @return A <code>ResultSet</code> with the best row identifier.    /**
2142    *     * @since 1.4
2143    * @exception SQLException If an error occurs.     */
2144    */    public boolean supportsMultipleOpenResults() throws SQLException;
2145  public abstract ResultSet  
2146  getBestRowIdentifier(String catalog, String schema, String table,    /**
2147                       int scope, boolean nullable) throws SQLException;     * @since 1.4
2148       */
2149  /*************************************************************************/    public boolean supportsGetGeneratedKeys() throws SQLException;
2150    
2151  /**    /**
2152    * This method returns the set of columns that are automatically updated     * @since 1.4
2153    * when the row is update. It returns this information as a     */
2154    * <code>ResultSet</code> with the following columns:    public ResultSet getSuperTypes(String catalog, String schemaPattern,
2155    * <p>      String typeNamePattern) throws SQLException;
2156    * <ol>  
2157    * <li>SCOPE - Unused    /**
2158    * <li>COLUMN_NAME - The name of the column.     * @since 1.4
2159    * <li>DATA_TYPE - The SQL type of the column. This is one of the constants     */
2160    * defined in <code>Types</code>.    public ResultSet getSuperTables(String catalog, String schemaPattern,
2161    * <li>TYPE_NAME - The string name of the data type for this column.      String tableNamePattern) throws SQLException;
2162    * <li>COLUMN_SIZE - The precision of the columns  
2163    * <li>BUFFER_LENGTH - Unused    /**
2164    * <li>DECIMAL_DIGITS - The scale of the column.     * @since 1.4
2165    * <li>PSEUDO_COLUMN - Whether or not the best row identifier is a     */
2166    * pseudo_column.  This is one of the constants defined in this class    public ResultSet getAttributes(String catalog, String schemaPattern, String
2167    * (<code>versionRowUnknown</code>, <code>versionRowNotPseudo</code>, or      typeNamePattern, String attributeNamePattern) throws SQLException;
2168    * <code>versionRowPseudo</code>).  
2169    * </ol>    /**
2170    *     * @since 1.4
2171    * @param catalog The catalog to retrieve information from, or the empty string     */
2172    * to return entities not associated with a catalog, or <code>null</code>    public boolean supportsResultSetHoldability(int holdability)
2173    * to return information from all catalogs.      throws SQLException;
2174    * @param schema The schema to retrieve information from, or the empty string  
2175    * to return entities not associated with a schema.    /**
2176    * @param table The table name to return information for.     * @since 1.4
2177    * @param columnPattern A pattern of column names to return information for.     */
2178    *    public int getResultSetHoldability() throws SQLException;
2179    * @return A <code>ResultSet</code> with the version columns.  
2180    *    /**
2181    * @exception SQLException If an error occurs.     * @since 1.4
2182    */     */
2183  public abstract ResultSet    public int getDatabaseMajorVersion() throws SQLException;
2184  getVersionColumns(String catalog, String schema, String table)  
2185                    throws SQLException;    /**
2186       * @since 1.4
2187  /*************************************************************************/     */
2188      public int getDatabaseMinorVersion() throws SQLException;
2189  /**  
2190    * This method returns a list of a table's primary key columns.  These    /**
2191    * are returned as a <code>ResultSet</code> with the following columns.     * @since 1.4
2192    * <p>     */
2193    * <ol>    public int getJDBCMajorVersion() throws SQLException;
2194    * <li>TABLE_CAT - The catalog of the table, which may be <code>null</code>.  
2195    * <li>TABLE_SCHEM - The schema of the table, which may be <code>null</code>.    /**
2196    * <li>TABLE_NAME - The name of the table.     * @since 1.4
2197    * <li>COLUMN_NAME - The name of the column.     */
2198    * <li>KEY_SEQ - The sequence number of the column within the primary key.    public int getJDBCMinorVersion() throws SQLException;
2199    * <li>PK_NAME - The name of the primary key, which may be <code>null</code>.  
2200    * </ol>    /**
2201    *     * @since 1.4
2202    * @param catalog The catalog to retrieve information from, or the empty string     */
2203    * to return entities not associated with a catalog, or <code>null</code>    public int getSQLStateType() throws SQLException;
2204    * to return information from all catalogs.  
2205    * @param schema The schema to retrieve information from, or the empty string    /**
2206    * to return entities not associated with a schema.     * @since 1.4
2207    * @param table The table name to return information for.     */
2208    * @param columnPattern A pattern of column names to return information for.    public boolean locatorsUpdateCopy() throws SQLException;
2209    *  
2210    * @return A <code>ResultSet</code> with the primary key columns.    /**
2211    *     * @since 1.4
2212    * @exception SQLException If an error occurs.     */
2213    */    public boolean supportsStatementPooling() throws SQLException;
2214  public abstract ResultSet  }
 getPrimaryKeys(String catalog, String schema, String table)  
                throws SQLException;  
   
 /*************************************************************************/  
   
 /**  
   * This method returns a list of the table's foreign keys.  These are  
   * returned as a <code>ResultSet</code> with the following columns:  
   * <p>  
   * <ol>  
   * <li>PKTABLE_CAT - The catalog of the table the key was imported from.  
   * <li>PKTABLE_SCHEM - The schema of the table the key was imported from.  
   * <li>PKTABLE_NAME - The name of the table the key was imported from.  
   * <li>PKCOLUMN_NAME - The name of the column that was imported.  
   * <li>FKTABLE_CAT - The foreign key catalog name.  
   * <li>FKTABLE_SCHEM - The foreign key schema name.  
   * <li>FKTABLE_NAME - The foreign key table name.  
   * <li>FKCOLUMN_NAME - The foreign key column name.  
   * <li>KEY_SEQ - The sequence number of the column within the foreign key.  
   * <li>UPDATE_RULE - How the foreign key behaves when the primary key is  
   * updated.  This is one of the constants defined in this class  
   * (<code>importedNoAction</code>, <code>importedKeyCascade</code>,  
   * <code>importedKeySetNull</code>, <code>importedKeySetDefault</code>, or  
   * <code>importedKeyRestrict</code>).  
   * <li>DELETE_RULE - How the foreign key behaves when the primary key is  
   * deleted.  This is one of the constants defined in this class  
   * (<code>importedNoAction</code>, <code>importedKeyCascade</code>,  
   * <code>importedKeySetNull</code>, or <code>importedKeySetDefault</code>)  
   * <li>FK_NAME - The name of the foreign key.  
   * <li>PK_NAME - The name of the primary key.  
   * <li>DEFERRABILITY - The deferrability value.  This is one of the  
   * constants defined in this table (<code>importedKeyInitiallyDeferred</code>,  
   * <code>importedKeyInitiallyImmediate</code>, or  
   * <code>importedKeyNotDeferrable</code>).  
   * </ol>  
   *  
   * @param catalog The catalog to retrieve information from, or the empty string  
   * to return entities not associated with a catalog, or <code>null</code>  
   * to return information from all catalogs.  
   * @param schema The schema to retrieve information from, or the empty string  
   * to return entities not associated with a schema.  
   * @param table The table name to return information for.  
   *  
   * @return A <code>ResultSet</code> with the foreign key columns.  
   *  
   * @exception SQLException If an error occurs.  
   */  
 public abstract ResultSet  
 getImportedKeys(String catalog, String schema, String table)  
                 throws SQLException;  
   
 /*************************************************************************/  
   
 /**  
   * This method returns a list of the table's which use this table's  
   * primary key as a foreign key.  The information is  
   * returned as a <code>ResultSet</code> with the following columns:  
   * <p>  
   * <ol>  
   * <li>PKTABLE_CAT - The catalog of the table the key was imported from.  
   * <li>PKTABLE_SCHEM - The schema of the table the key was imported from.  
   * <li>PKTABLE_NAME - The name of the table the key was imported from.  
   * <li>PKCOLUMN_NAME - The name of the column that was imported.  
   * <li>FKTABLE_CAT - The foreign key catalog name.  
   * <li>FKTABLE_SCHEM - The foreign key schema name.  
   * <li>FKTABLE_NAME - The foreign key table name.  
   * <li>FKCOLUMN_NAME - The foreign key column name.  
   * <li>KEY_SEQ - The sequence number of the column within the foreign key.  
   * <li>UPDATE_RULE - How the foreign key behaves when the primary key is  
   * updated.  This is one of the constants defined in this class  
   * (<code>importedNoAction</code>, <code>importedKeyCascade</code>,  
   * <code>importedKeySetNull</code>, <code>importedKeySetDefault</code>, or  
   * <code>importedKeyRestrict</code>).  
   * <li>DELETE_RULE - How the foreign key behaves when the primary key is  
   * deleted.  This is one of the constants defined in this class  
   * (<code>importedNoAction</code>, <code>importedKeyCascade</code>,  
   * <code>importedKeySetNull</code>, or <code>importedKeySetDefault</code>)  
   * <li>FK_NAME - The name of the foreign key.  
   * <li>PK_NAME - The name of the primary key.  
   * <li>DEFERRABILITY - The deferrability value.  This is one of the  
   * constants defined in this table (<code>importedKeyInitiallyDeferred</code>,  
   * <code>importedKeyInitiallyImmediate</code>, or  
   * <code>importedKeyNotDeferrable</code>).  
   * </ol>  
   *  
   * @param catalog The catalog to retrieve information from, or the empty string  
   * to return entities not associated with a catalog, or <code>null</code>  
   * to return information from all catalogs.  
   * @param schema The schema to retrieve information from, or the empty string  
   * to return entities not associated with a schema.  
   * @param table The table name to return information for.  
   *  
   * @return A <code>ResultSet</code> with the requested information  
   *  
   * @exception SQLException If an error occurs.  
   */  
 public abstract ResultSet  
 getExportedKeys(String catalog, String schema, String table)  
                 throws SQLException;  
   
 /*************************************************************************/  
   
 /**  
   * This method returns a description of how one table imports another  
   * table's primary key as a foreign key.  The information is  
   * returned as a <code>ResultSet</code> with the following columns:  
   * <p>  
   * <ol>  
   * <li>PKTABLE_CAT - The catalog of the table the key was imported from.  
   * <li>PKTABLE_SCHEM - The schema of the table the key was imported from.  
   * <li>PKTABLE_NAME - The name of the table the key was imported from.  
   * <li>PKCOLUMN_NAME - The name of the column that was imported.  
   * <li>FKTABLE_CAT - The foreign key catalog name.  
   * <li>FKTABLE_SCHEM - The foreign key schema name.  
   * <li>FKTABLE_NAME - The foreign key table name.  
   * <li>FKCOLUMN_NAME - The foreign key column name.  
   * <li>KEY_SEQ - The sequence number of the column within the foreign key.  
   * <li>UPDATE_RULE - How the foreign key behaves when the primary key is  
   * updated.  This is one of the constants defined in this class  
   * (<code>importedNoAction</code>, <code>importedKeyCascade</code>,  
   * <code>importedKeySetNull</code>, <code>importedKeySetDefault</code>, or  
   * <code>importedKeyRestrict</code>).  
   * <li>DELETE_RULE - How the foreign key behaves when the primary key is  
   * deleted.  This is one of the constants defined in this class  
   * (<code>importedNoAction</code>, <code>importedKeyCascade</code>,  
   * <code>importedKeySetNull</code>, or <code>importedKeySetDefault</code>)  
   * <li>FK_NAME - The name of the foreign key.  
   * <li>PK_NAME - The name of the primary key.  
   * <li>DEFERRABILITY - The deferrability value.  This is one of the  
   * constants defined in this table (<code>importedKeyInitiallyDeferred</code>,  
   * <code>importedKeyInitiallyImmediate</code>, or  
   * <code>importedKeyNotDeferrable</code>).  
   * </ol>  
   *  
   * @param primCatalog The catalog to retrieve information from, or the empty string  
   * to return entities not associated with a catalog, or <code>null</code>  
   * to return information from all catalogs, on the exporting side.  
   * @param primSchema The schema to retrieve information from, or the empty string  
   * to return entities not associated with a schema, on the exporting side.  
   * @param primTable The table name to return information for, on the exporting  
   * side.  
   * @param forCatalog The catalog to retrieve information from, or the empty string  
   * to return entities not associated with a catalog, or <code>null</code>  
   * to return information from all catalogs, on the importing side.  
   * @param forSchema The schema to retrieve information from, or the empty string  
   * to return entities not associated with a schema on the importing side.  
   * @param forTable The table name to return information for on the importing  
   * side.  
   *  
   * @return A <code>ResultSet</code> with the requested information  
   *  
   * @exception SQLException If an error occurs.  
   */  
 public abstract ResultSet  
 getCrossReference(String primCatalog, String primSchema, String primTable,  
                   String forCatalog, String forSchema, String forTable)  
                   throws SQLException;  
   
 /*************************************************************************/  
   
 /**  
   * This method returns a list of the SQL types supported by this  
   * database.  The information is returned as a <code>ResultSet</code>  
   * with the following columns:  
   * <p>  
   * <ol>  
   * <li>TYPE_NAME - The name of the data type.  
   * <li>DATA_TYPE - A data type constant from <code>Types</code> for this  
   * type.  
   * <li>PRECISION - The maximum precision of this type.  
   * <li>LITERAL_PREFIX - Prefix value used to quote a literal, which may be  
   * <code>null</code>.  
   * <li>LITERAL_SUFFIX - Suffix value used to quote a literal, which may be  
   * <code>null</code>.  
   * <li>CREATE_PARAMS - The parameters used to create the type, which may be  
   * <code>null</code>.  
   * <li>NULLABLE - Whether or not this type supports NULL values.  This will  
   * be one of the constants defined in this interface  
   * (<code>typeNoNulls</code>, <code>typeNullable</code>, or  
   * <code>typeNullableUnknown</code>).  
   * <li>CASE_SENSITIVE - Whether or not the value is case sensitive.  
   * <li>SEARCHABLE - Whether or not "LIKE" expressions are supported in  
   * WHERE clauses for this type.  This will be one of the constants defined  
   * in this interface (<code>typePredNone</code>, <code>typePredChar</code>,  
   * <code>typePredBasic</code>, or <code>typeSearchable</code>).  
   * <li>UNSIGNED_ATTRIBUTE - Is the value of this type unsigned.  
   * <li>FIXED_PREC_SCALE - Whether or not this type can be used for money.  
   * <li>AUTO_INCREMENT - Whether or not this type supports auto-incrementing.  
   * <li>LOCAL_TYPE_NAME - A localized name for this data type.  
   * <li>MINIMUM_SCALE - The minimum scale supported by this type.  
   * <li>MAXIMUM_SCALE - The maximum scale supported by this type.  
   * <li>SQL_DATA_TYPE - Unused.  
   * <li>SQL_DATETIME_SUB - Unused.  
   * <li>NUM_PREC_RADIX - The radix of this data type.  
   * </ol>  
   *  
   * @return A <code>ResultSet</code> with the list of available data types.  
   *  
   * @exception SQLException If an error occurs.  
   */  
 public abstract ResultSet  
 getTypeInfo() throws SQLException;  
   
 /*************************************************************************/  
   
 /**  
   * This method returns information about a tables indices and statistics.  
   * It is returned as a <code>ResultSet</code> with the following columns:  
   * <p>  
   * <ol>  
   * <li>TABLE_CAT - The catalog of the table, which may be <code>null</code>.  
   * <li>TABLE_SCHEM - The schema of the table, which may be <code>null</code>.  
   * <li>TABLE_NAME - The name of the table.  
   * <li>NON_UNIQUE - Are index values non-unique?  
   * <li>INDEX_QUALIFIER The index catalog, which may be <code>null</code>  
   * <li>INDEX_NAME - The name of the index.  
   * <li>TYPE - The type of index, which will be one of the constants defined  
   * in this interface (<code>tableIndexStatistic</code>,  
   * <code>tableIndexClustered</code>, <code>tableIndexHashed</code>, or  
   * <code>tableIndexOther</code>).  
   * <li>ORDINAL_POSITION - The sequence number of this column in the index.  
   * This will be 0 when the index type is <code>tableIndexStatistic</code>.  
   * <li>COLUMN_NAME - The name of this column in the index.  
   * <li>ASC_OR_DESC - "A" for an ascending sort sequence, "D" for a  
   * descending sort sequence or <code>null</code> if a sort sequence is not  
   * supported.  
   * <li>CARDINALITY - The number of unique rows in the index, or the number  
   * of rows in the table if the index type is <code>tableIndexStatistic</code>.  
   * <li>PAGES - The number of pages used for the index, or the number of pages  
   * in the table if the index type is <code>tableIndexStatistic</code>.  
   * <li>FILTER_CONDITION - The filter condition for this index, which may be  
   * <code>null</code>.  
   * </ol>  
   *  
   * @param catalog The catalog to retrieve information from, or the empty string  
   * to return entities not associated with a catalog, or <code>null</code>  
   * to return information from all catalogs.  
   * @param schema The schema to retrieve information from, or the empty string  
   * to return entities not associated with a schema.  
   * @param table The table name to return information for.  
   * @param unique <code>true</code> to return only unique indexes,  
   * <code>false</code> otherwise.  
   * @param approx <code>true</code> if data values can be approximations,  
   * <code>false</code> otherwise.  
   *  
   * @return A <code>ResultSet</code> with the requested index information  
   *  
   * @exception SQLException If an error occurs.  
   */  
 public abstract ResultSet  
 getIndexInfo(String catalog, String schema, String table, boolean unique,  
              boolean approx) throws SQLException;  
   
 /*************************************************************************/  
   
 /**  
   * This method tests whether or not the datbase supports the specified  
   * result type.  
   *  
   * @param type The desired result type, which is one of the constants  
   * defined in <code>ResultSet</code>.  
   *  
   * @return <code>true</code> if the result set type is supported,  
   * <code>false</code> otherwise.  
   *  
   * @exception SQLException If an error occurs.  
   *  
   * @see ResultSet  
   */  
 public abstract boolean  
 supportsResultSetType(int type) throws SQLException;  
   
 /*************************************************************************/  
   
 /**  
   * This method tests whether the specified result set type and result set  
   * concurrency type are supported by the database.  
   *  
   * @param type The desired result type, which is one of the constants  
   * defined in <code>ResultSet</code>.  
   * @param concur The desired concurrency type, which is one of the constants  
   * defined in <code>ResultSet</code>.  
   *  
   * @return <code>true</code> if the result set type is supported,  
   * <code>false</code> otherwise.  
   *  
   * @exception SQLException If an error occurs.  
   *  
   * @see ResultSet  
   */  
 public abstract boolean  
 supportsResultSetConcurrency(int type, int concur) throws SQLException;  
   
 /*************************************************************************/  
   
 /**  
   * This method tests whether or not the specified result set type sees its  
   * own updates.  
   *  
   * @param type The desired result type, which is one of the constants  
   * defined in <code>ResultSet</code>.  
   *  
   * @return <code>true</code> if the result set type sees its own updates,  
   * <code>false</code> otherwise.  
   *  
   * @exception SQLException If an error occurs.  
   *  
   * @see ResultSet  
   */  
 public abstract boolean  
 ownUpdatesAreVisible(int type) throws SQLException;  
   
 /*************************************************************************/  
   
 /**  
   * This method tests whether or not the specified result set type sees its  
   * own deletes.  
   *  
   * @param type The desired result type, which is one of the constants  
   * defined in <code>ResultSet</code>.  
   *  
   * @return <code>true</code> if the result set type sees its own deletes,  
   * <code>false</code> otherwise.  
   *  
   * @exception SQLException If an error occurs.  
   *  
   * @see ResultSet  
   */  
 public abstract boolean  
 ownDeletesAreVisible(int type) throws SQLException;  
   
 /*************************************************************************/  
   
 /**  
   * This method tests whether or not the specified result set type sees its  
   * own inserts.  
   *  
   * @param type The desired result type, which is one of the constants  
   * defined in <code>ResultSet</code>.  
   *  
   * @return <code>true</code> if the result set type sees its own inserts,  
   * <code>false</code> otherwise.  
   *  
   * @exception SQLException If an error occurs.  
   *  
   * @see ResultSet  
   */  
 public abstract boolean  
 ownInsertsAreVisible(int type) throws SQLException;  
   
 /*************************************************************************/  
   
 /**  
   * This method tests whether or not the specified result set type sees  
   * updates committed by others.  
   *  
   * @param type The desired result type, which is one of the constants  
   * defined in <code>ResultSet</code>.  
   *  
   * @return <code>true</code> if the result set type sees other updates,  
   * <code>false</code> otherwise.  
   *  
   * @exception SQLException If an error occurs.  
   *  
   * @see ResultSet  
   */  
 public abstract boolean  
 othersUpdatesAreVisible(int type) throws SQLException;  
   
 /*************************************************************************/  
   
 /**  
   * This method tests whether or not the specified result set type sees  
   * deletes committed by others.  
   *  
   * @param type The desired result type, which is one of the constants  
   * defined in <code>ResultSet</code>.  
   *  
   * @return <code>true</code> if the result set type sees other deletes,  
   * <code>false</code> otherwise.  
   *  
   * @exception SQLException If an error occurs.  
   *  
   * @see ResultSet  
   */  
 public abstract boolean  
 othersDeletesAreVisible(int type) throws SQLException;  
   
 /*************************************************************************/  
   
 /**  
   * This method tests whether or not the specified result set type sees  
   * inserts committed by others.  
   *  
   * @param type The desired result type, which is one of the constants  
   * defined in <code>ResultSet</code>.  
   *  
   * @return <code>true</code> if the result set type sees other inserts,  
   * <code>false</code> otherwise.  
   *  
   * @exception SQLException If an error occurs.  
   *  
   * @see ResultSet  
   */  
 public abstract boolean  
 othersInsertsAreVisible(int type) throws SQLException;  
   
 /*************************************************************************/  
   
 /**  
   * This method tests whether or not the specified result set type can detect  
   * a visible update by calling the <code>rowUpdated</code> method.  
   *  
   * @param type The desired result type, which is one of the constants  
   * defined in <code>ResultSet</code>.  
   *  
   * @return <code>true</code> if the result set type can detect visible updates  
   * using <code>rowUpdated</code>, <code>false</code> otherwise.  
   *  
   * @exception SQLException If an error occurs.  
   *  
   * @see ResultSet  
   */  
 public abstract boolean  
 updatesAreDetected(int type) throws SQLException;  
   
 /*************************************************************************/  
   
 /**  
   * This method tests whether or not the specified result set type can detect  
   * a visible delete by calling the <code>rowUpdated</code> method.  
   *  
   * @param type The desired result type, which is one of the constants  
   * defined in <code>ResultSet</code>.  
   *  
   * @return <code>true</code> if the result set type can detect visible deletes  
   * using <code>rowUpdated</code>, <code>false</code> otherwise.  
   *  
   * @exception SQLException If an error occurs.  
   *  
   * @see ResultSet  
   */  
 public abstract boolean  
 deletesAreDetected(int type) throws SQLException;  
   
 /*************************************************************************/  
   
 /**  
   * This method tests whether or not the specified result set type can detect  
   * a visible insert by calling the <code>rowUpdated</code> method.  
   *  
   * @param type The desired result type, which is one of the constants  
   * defined in <code>ResultSet</code>.  
   *  
   * @return <code>true</code> if the result set type can detect visible inserts  
   * using <code>rowUpdated</code>, <code>false</code> otherwise.  
   *  
   * @exception SQLException If an error occurs.  
   *  
   * @see ResultSet  
   */  
 public abstract boolean  
 insertsAreDetected(int type) throws SQLException;  
   
 /*************************************************************************/  
   
 /**  
   * This method tests whether or not the database supports batch updates.  
   *  
   * @return <code>true</code> if batch updates are supported,  
   * <code>false</code> otherwise.  
   *  
   * @exception SQLException If an error occurs.  
   */  
 public abstract boolean  
 supportsBatchUpdates() throws SQLException;  
   
 /*************************************************************************/  
   
 /**  
   * This method returns the list of user defined data types in use.  These  
   * are returned as a <code>ResultSet</code> with the following columns:  
   * <p>  
   * <ol>  
   * <li>TYPE_CAT - The catalog name, which may be <code>null</code>.  
   * <li>TYPE_SCEHM - The schema name, which may be <code>null</code>.  
   * <li>TYPE_NAME - The user defined data type name.  
   * <li>CLASS_NAME - The Java class name this type maps to.  
   * <li>DATA_TYPE - A type identifier from <code>Types</code> for this type.  
   * This will be one of <code>JAVA_OBJECT</code>, <code>STRUCT</code>, or  
   * <code>DISTINCT</code>.  
   * <li>REMARKS - Comments about this data type.  
   * </ol>  
   *  
   * @param catalog The catalog to retrieve information from, or the empty string  
   * to return entities not associated with a catalog, or <code>null</code>  
   * to return information from all catalogs.  
   * @param schema The schema to retrieve information from, or the empty string  
   * to return entities not associated with a schema.  
   * @param typePattern The type name pattern to match.  
   * @param types The type identifier patterns (from <code>Types</code>) to  
   * match.  
   *  
   * @return A <code>ResultSet</code> with the requested type information  
   *  
   * @exception SQLException If an error occurs.  
   */  
 public abstract ResultSet  
 getUDTs(String catalog, String schema, String typePattern, int[] types)  
         throws SQLException;  
   
 /*************************************************************************/  
   
 /**  
   * This method returns the <code>Connection</code> object that was used  
   * to generate the metadata in this object.  
   *  
   * @return The connection for this object.  
   *  
   * @exception SQLException If an error occurs.  
   */  
 public abstract Connection  
 getConnection() throws SQLException;  
   
 } // interface DatabaseMetaData  
   

Legend:
Removed from v.1.9  
changed lines
  Added in v.1.10

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26