OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [libjava/] [classpath/] [java/] [sql/] [DatabaseMetaData.java] - Blame information for rev 771

Details | Compare with Previous | View Log

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

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.