xref: /trunk/main/offapi/com/sun/star/sdbc/XDatabaseMetaData.idl (revision 1ecadb572e7010ff3b3382ad9bf179dbc6efadbb)
1/*************************************************************************
2 *
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * Copyright 2000, 2010 Oracle and/or its affiliates.
6 *
7 * OpenOffice.org - a multi-platform office productivity suite
8 *
9 * This file is part of OpenOffice.org.
10 *
11 * OpenOffice.org is free software: you can redistribute it and/or modify
12 * it under the terms of the GNU Lesser General Public License version 3
13 * only, as published by the Free Software Foundation.
14 *
15 * OpenOffice.org is distributed in the hope that it will be useful,
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18 * GNU Lesser General Public License version 3 for more details
19 * (a copy is included in the LICENSE file that accompanied this code).
20 *
21 * You should have received a copy of the GNU Lesser General Public License
22 * version 3 along with OpenOffice.org.  If not, see
23 * <http://www.openoffice.org/license.html>
24 * for a copy of the LGPLv3 License.
25 *
26 ************************************************************************/
27#ifndef __com_sun_star_sdbc_XDatabaseMetaData_idl__
28#define __com_sun_star_sdbc_XDatabaseMetaData_idl__
29
30#ifndef __com_sun_star_uno_XInterface_idl__
31#include <com/sun/star/uno/XInterface.idl>
32#endif
33
34#ifndef __com_sun_star_sdbc_SQLException_idl__
35#include <com/sun/star/sdbc/SQLException.idl>
36#endif
37
38
39 module com {  module sun {  module star {  module sdbc {
40
41 published interface XResultSet;
42 published interface XConnection;
43
44/** provides comprehensive information about the database as a whole.
45
46
47    <p>Many of the methods here return lists of information in
48    the form of
49    <type scope="com::sun::star::sdbc">XResultSet</type>
50    objects.
51    You can use the normal <type scope="com::sun::star::sdbc">XResultSet</type>
52    methods such as
53    <member scope="com::sun::star::sdbc">XResultSet::getString()</member>
54    and
55    <member scope="com::sun::star::sdbc">XResultSet::getInt()</member>
56    to retrieve the data from these XResultSets. If a given form of
57    metadata is not available, these methods should throw a
58    <type scope="com::sun::star::sdbc">SQLException</type>
59    .
60    That a value of <type scope="com::sun::star::sdbc">XResultSet</type> is <NULL/>
61    can be chaked with the method <member scope="com::sun::star::sdbc">XResultSet::wasNull()</member>.
62    In the text only "(may be <NULL/>)" is mentioned for this case.
63    </p>
64    <p>Some of these methods take arguments that are String patterns. These
65    arguments all have names such as fooPattern. Within a pattern String, "%"
66    means match any substring of 0 or more characters, and "_" means match
67    any one character. Only metadata entries matching the search pattern
68    are returned. If a search pattern argument is set to <VOID/>,
69    that argument's criteria will be dropped from the search.
70    </p>
71    <p>
72    A
73    <type scope="com::sun::star::sdbc">SQLException</type>
74    will be thrown if a driver does not support
75    a meta data method. In the case of methods that return an XResultSet,
76    either an XResultSet (which may be empty) is returned or a
77    SQLException is thrown.</p>
78 */
79published interface XDatabaseMetaData: com::sun::star::uno::XInterface
80{
81
82    /** Can all the procedures returned by getProcedures be called by the
83        current user?
84
85        @return
86        <TRUE/>
87        if the user is allowed to call all procedures returned by getProcedures
88        otherwise
89        <FALSE/>
90        .
91        @throws SQLException
92            if a database access error occurs.
93     */
94    boolean allProceduresAreCallable() raises (SQLException);
95    //-------------------------------------------------------------------------
96
97    /** Can all the tables returned by getTable be SELECTed by the
98        current user?
99        @returns
100            <TRUE/> if so
101        @throws SQLException
102            if a database access error occurs.
103     */
104    boolean allTablesAreSelectable() raises (SQLException);
105    //-------------------------------------------------------------------------
106
107    /** returns the URL for the database connection
108     */
109    string getURL() raises (SQLException);
110    //-------------------------------------------------------------------------
111
112    /** returns the user name from this database connection.
113     */
114    string getUserName() raises (SQLException);
115    //-------------------------------------------------------------------------
116
117    /** checks if the database in read-only mode.
118        @returns
119            <TRUE/> if so
120        @throws SQLException
121            if a database access error occurs.
122     */
123    boolean isReadOnly() raises (SQLException);
124    //-------------------------------------------------------------------------
125
126    /** Are NULL values sorted high?
127        @returns
128            <TRUE/> if so
129        @throws SQLException
130            if a database access error occurs.
131    */
132    boolean nullsAreSortedHigh() raises (SQLException);
133    //-------------------------------------------------------------------------
134
135    /** Are NULL values sorted low?
136        @returns
137            <TRUE/> if so
138        @throws SQLException
139            if a database access error occurs.
140    */
141    boolean nullsAreSortedLow() raises (SQLException);
142    //-------------------------------------------------------------------------
143
144    /** Are NULL values sorted at the start regardless of sort order?
145        @returns
146            <TRUE/> if so
147        @throws SQLException
148            if a database access error occurs.
149     */
150    boolean nullsAreSortedAtStart() raises (SQLException);
151    //-------------------------------------------------------------------------
152
153    /**  Are NULL values sorted at the end, regardless of sort order?
154        @returns
155            <TRUE/> if so
156        @throws SQLException
157            if a database access error occurs.
158     */
159    boolean nullsAreSortedAtEnd() raises (SQLException);
160    //-------------------------------------------------------------------------
161
162    /** returns the name of the database product.
163     */
164    string getDatabaseProductName() raises (SQLException);
165    //-------------------------------------------------------------------------
166
167    /** returns the version of the database product.
168     */
169    string getDatabaseProductVersion() raises (SQLException);
170    //-------------------------------------------------------------------------
171
172    /** returns the name of the SDBC driver.
173     */
174    string getDriverName() raises (SQLException);
175    //-------------------------------------------------------------------------
176
177    /** returns the version number of the SDBC driver.
178     */
179    string getDriverVersion() raises (SQLException);
180    //-------------------------------------------------------------------------
181
182    /** returns the SDBC driver major version number.
183     */
184    long getDriverMajorVersion();
185    //-------------------------------------------------------------------------
186
187    /** returns the SDBC driver minor version number.
188     */
189    long getDriverMinorVersion();
190    //-------------------------------------------------------------------------
191
192    /** use the database local files to save the tables.
193        @returns
194            <TRUE/> if so
195        @throws SQLException
196            if a database access error occurs.
197     */
198    boolean usesLocalFiles() raises (SQLException);
199    //-------------------------------------------------------------------------
200
201    /** use the database one local file to save for each table.
202        @returns
203            <TRUE/> if so
204        @throws SQLException
205            if a database access error occurs.
206     */
207    boolean usesLocalFilePerTable() raises (SQLException);
208    //-------------------------------------------------------------------------
209
210    /** use the database 'mixed case unquoted SQL identifiers' case sensitive.
211        @returns
212            <TRUE/> if so
213        @throws SQLException
214            if a database access error occurs.
215     */
216    boolean supportsMixedCaseIdentifiers() raises (SQLException);
217    //-------------------------------------------------------------------------
218
219    /** Does the database treat mixed case unquoted SQL identifiers as
220        case insensitive and store them in upper case?
221            @returns
222            <TRUE/> if so
223        @throws SQLException
224            if a database access error occurs.
225     */
226    boolean storesUpperCaseIdentifiers() raises (SQLException);
227    //-------------------------------------------------------------------------
228
229    /** Does the database treat mixed case unquoted SQL identifiers as
230        case insensitive and store them in lower case?
231        @returns
232            <TRUE/> if so
233        @throws SQLException
234            if a database access error occurs.
235     */
236    boolean storesLowerCaseIdentifiers() raises (SQLException);
237    //-------------------------------------------------------------------------
238
239    /** Does the database treat mixed case unquoted SQL identifiers as
240        case insensitive and store them in mixed case?
241        @returns
242            <TRUE/> if so
243        @throws SQLException
244            if a database access error occurs.
245     */
246    boolean storesMixedCaseIdentifiers() raises (SQLException);
247    //-------------------------------------------------------------------------
248
249    /** Does the database treat mixed case quoted SQL identifiers as
250        case sensitive and as a result store them in mixed case?
251        @returns
252            <TRUE/> if so
253        @throws SQLException
254            if a database access error occurs.
255     */
256    boolean supportsMixedCaseQuotedIdentifiers() raises (SQLException);
257    //-------------------------------------------------------------------------
258
259    /** Does the database treat mixed case quoted SQL identifiers as
260        case insensitive and store them in upper case?
261        @returns
262            <TRUE/> if so
263        @throws SQLException
264            if a database access error occurs.
265     */
266    boolean storesUpperCaseQuotedIdentifiers() raises (SQLException);
267    //-------------------------------------------------------------------------
268
269    /** Does the database treat mixed case quoted SQL identifiers as
270        case insensitive and store them in lower case?
271        @returns
272            <TRUE/> if so
273        @throws SQLException
274            if a database access error occurs.
275     */
276    boolean storesLowerCaseQuotedIdentifiers() raises (SQLException);
277    //-------------------------------------------------------------------------
278
279    /** Does the database treat mixed case quoted SQL identifiers as
280        case insensitive and store them in mixed case?
281        @returns
282            <TRUE/> if so
283        @throws SQLException
284            if a database access error occurs.
285     */
286    boolean storesMixedCaseQuotedIdentifiers() raises (SQLException);
287    //-------------------------------------------------------------------------
288
289    /** What's the string used to quote SQL identifiers?
290        This returns a space " " if identifier quoting is not supported.
291        @returns
292            <TRUE/> if so
293        @throws SQLException
294            if a database access error occurs.
295     */
296    string getIdentifierQuoteString() raises (SQLException);
297    //-------------------------------------------------------------------------
298
299    /** gets a comma-separated list of all a database's SQL keywords
300        that are NOT also SQL92 keywords.
301        @returns
302            <TRUE/> if so
303        @throws SQLException
304            if a database access error occurs.
305     */
306    string getSQLKeywords() raises (SQLException);
307    //-------------------------------------------------------------------------
308
309    /** gets a comma-separated list of math functions. These are the
310        X/Open CLI math function names used in the SDBC function escape
311        clause.
312        @returns
313            <TRUE/> if so
314        @throws SQLException
315            if a database access error occurs.
316     */
317    string getNumericFunctions() raises (SQLException);
318    //-------------------------------------------------------------------------
319
320    /** gets a comma-separated list of string functions. These are the
321        X/Open CLI string function names used in the SDBC function escape
322        clause.
323        @returns
324            <TRUE/> if so
325        @throws SQLException
326            if a database access error occurs.
327     */
328    string getStringFunctions() raises (SQLException);
329    //-------------------------------------------------------------------------
330
331    /** gets a comma-separated list of system functions. These are the
332        X/Open CLI system function names used in the SDBC function escape
333        clause.
334        @returns
335            <TRUE/> if so
336        @throws SQLException
337            if a database access error occurs.
338     */
339    string getSystemFunctions() raises (SQLException);
340    //-------------------------------------------------------------------------
341
342    /** gets a comma-separated list of time and date functions.
343        @returns
344            <TRUE/> if so
345        @throws SQLException
346            if a database access error occurs.
347     */
348    string getTimeDateFunctions() raises (SQLException);
349    //-------------------------------------------------------------------------
350
351    /** gets the string that can be used to escape wildcard characters.
352        This is the string that can be used to escape '_' or '%' in
353        the string pattern style catalog search parameters.
354
355
356        <p>
357        The '_' character represents any single character.
358        </p>
359        <p>
360        The '%' character represents any sequence of zero or
361        more characters.
362        </p>
363        @returns
364            <TRUE/> if so
365        @throws SQLException
366            if a database access error occurs.
367     */
368    string getSearchStringEscape() raises (SQLException);
369    //-------------------------------------------------------------------------
370
371    /** gets all the "extra" characters that can be used in unquoted
372        identifier names (those beyond a-z, A-Z, 0-9 and _).
373        @returns
374            <TRUE/> if so
375        @throws SQLException
376            if a database access error occurs.
377     */
378    string getExtraNameCharacters() raises (SQLException);
379    //-------------------------------------------------------------------------
380
381    /** support the Database "ALTER TABLE" with add column?
382        @returns
383            <TRUE/> if so
384        @throws SQLException
385            if a database access error occurs.
386     */
387    boolean supportsAlterTableWithAddColumn() raises (SQLException);
388    //-------------------------------------------------------------------------
389
390    /** support the Database  "ALTER TABLE" with drop column?
391        @returns
392            <TRUE/> if so
393        @throws SQLException
394            if a database access error occurs.
395     */
396    boolean supportsAlterTableWithDropColumn() raises (SQLException);
397    //-------------------------------------------------------------------------
398
399    /** support the Database column aliasing?
400
401
402        <p>
403        The SQL AS clause can be used to provide names for
404        computed columns or to provide alias names for columns as required.
405        </p>
406        @returns
407            <TRUE/> if so
408        @throws SQLException
409            if a database access error occurs.
410     */
411    boolean supportsColumnAliasing() raises (SQLException);
412    //-------------------------------------------------------------------------
413
414    /** are concatenations between NULL and non-NULL values NULL?
415        @returns
416            <TRUE/> if so
417        @throws SQLException
418            if a database access error occurs.
419     */
420    boolean nullPlusNonNullIsNull() raises (SQLException);
421    //-------------------------------------------------------------------------
422
423    /** <TRUE/>
424            , if the Database supports the CONVERT function between SQL types,
425            otherwise
426            <FALSE/>
427            .
428        @returns
429            <TRUE/> if so
430        @throws SQLException
431            if a database access error occurs.
432     */
433    boolean supportsTypeConversion() raises (SQLException);
434    //-------------------------------------------------------------------------
435
436    /**     <TRUE/>
437            , if the Database supports the CONVERT between the given SQL types
438            otherwise
439            <FALSE/>
440            .
441        @returns
442            <TRUE/> if so
443        @throws SQLException
444            if a database access error occurs.
445     */
446    boolean supportsConvert([in]long fromType, [in]long toType)
447        raises (SQLException);
448    //-------------------------------------------------------------------------
449
450    /** Are table correlation names supported?
451        @returns
452            <TRUE/> if so
453        @throws SQLException
454            if a database access error occurs.
455     */
456    boolean supportsTableCorrelationNames() raises (SQLException);
457    //-------------------------------------------------------------------------
458
459    /** If table correlation names are supported, are they restricted
460        to be different from the names of the tables?
461        @returns
462            <TRUE/> if so
463        @throws SQLException
464            if a database access error occurs.
465     */
466    boolean supportsDifferentTableCorrelationNames()
467        raises (SQLException);
468    //-------------------------------------------------------------------------
469
470    /** Are expressions in "ORDER BY" lists supported?
471        @returns
472            <TRUE/> if so
473        @throws SQLException
474            if a database access error occurs.
475     */
476    boolean supportsExpressionsInOrderBy() raises (SQLException);
477    //-------------------------------------------------------------------------
478
479    /** Can an "ORDER BY" clause use columns not in the SELECT statement?
480        @returns
481            <TRUE/> if so
482        @throws SQLException
483            if a database access error occurs.
484     */
485    boolean supportsOrderByUnrelated() raises (SQLException);
486    //-------------------------------------------------------------------------
487
488    /** Is some form of "GROUP BY" clause supported?
489        @returns
490            <TRUE/> if so
491        @throws SQLException
492            if a database access error occurs.
493     */
494    boolean supportsGroupBy() raises (SQLException);
495    //-------------------------------------------------------------------------
496
497    /** Can a "GROUP BY" clause use columns not in the SELECT?
498        @returns
499            <TRUE/> if so
500        @throws SQLException
501            if a database access error occurs.
502     */
503    boolean supportsGroupByUnrelated() raises (SQLException);
504    //-------------------------------------------------------------------------
505
506    /** Can a "GROUP BY" clause add columns not in the SELECT
507        provided it specifies all the columns in the SELECT?
508        @returns
509            <TRUE/> if so
510        @throws SQLException
511            if a database access error occurs.
512     */
513    boolean supportsGroupByBeyondSelect() raises (SQLException);
514    //-------------------------------------------------------------------------
515
516    /** Is the escape character in "LIKE" clauses supported?
517        @returns
518            <TRUE/> if so
519        @throws SQLException
520            if a database access error occurs.
521     */
522    boolean supportsLikeEscapeClause() raises (SQLException);
523    //-------------------------------------------------------------------------
524
525    /** Are multiple XResultSets from a single execute supported?
526        @returns
527            <TRUE/> if so
528        @throws SQLException
529            if a database access error occurs.
530     */
531    boolean supportsMultipleResultSets() raises (SQLException);
532    //-------------------------------------------------------------------------
533
534    /** Can we have multiple transactions open at once (on different
535        connections)?
536        @returns
537            <TRUE/> if so
538        @throws SQLException
539            if a database access error occurs.
540     */
541    boolean supportsMultipleTransactions() raises (SQLException);
542    //-------------------------------------------------------------------------
543
544    /** Can columns be defined as non-nullable?
545        @returns
546            <TRUE/> if so
547        @throws SQLException
548            if a database access error occurs.
549     */
550    boolean supportsNonNullableColumns() raises (SQLException);
551    //-------------------------------------------------------------------------
552
553    /**     <TRUE/>, if the database supports ODBC Minimum SQL grammar,
554            otherwise <FALSE/>.
555        @returns
556            <TRUE/> if so
557        @throws SQLException
558            if a database access error occurs.
559     */
560    boolean supportsMinimumSQLGrammar() raises (SQLException);
561    //-------------------------------------------------------------------------
562
563    /** <TRUE/>, if the database supports ODBC Core SQL grammar,
564            otherwise <FALSE/>.
565            @returns
566            <TRUE/> if so
567        @throws SQLException
568            if a database access error occurs.
569     */
570    boolean supportsCoreSQLGrammar() raises (SQLException);
571    //-------------------------------------------------------------------------
572
573    /**
574            <TRUE/>, if the database supports ODBC Extended SQL grammar,
575            otherwise <FALSE/>.
576            @returns
577            <TRUE/> if so
578        @throws SQLException
579            if a database access error occurs.
580     */
581    boolean supportsExtendedSQLGrammar() raises (SQLException);
582    //-------------------------------------------------------------------------
583
584    /** @returns
585            <TRUE/>, if the database supports ANSI92 entry level SQL grammar,
586            otherwise <FALSE/>.
587            @throws SQLException
588            if a database access error occurs.
589     */
590    boolean supportsANSI92EntryLevelSQL() raises (SQLException);
591    //-------------------------------------------------------------------------
592
593    /** @returns
594            <TRUE/>, if the database supports ANSI92 intermediate SQL grammar,
595            otherwise <FALSE/>.
596            @throws SQLException
597            if a database access error occurs.
598     */
599    boolean supportsANSI92IntermediateSQL() raises (SQLException);
600    //-------------------------------------------------------------------------
601
602    /** @returns
603            <TRUE/>, if the database supports ANSI92 full SQL grammar,
604            otherwise <FALSE/>.
605            @throws SQLException
606            if a database access error occurs.
607     */
608    boolean supportsANSI92FullSQL() raises (SQLException);
609    //-------------------------------------------------------------------------
610
611    /** returns
612            <TRUE/>, if the Database supports SQL Integrity Enhancement Facility,
613            otherwise <FALSE/>.
614            @throws SQLException
615            if a database access error occurs.
616     */
617    boolean supportsIntegrityEnhancementFacility() raises (SQLException);
618    //-------------------------------------------------------------------------
619
620    /** @returns
621            <TRUE/>, if some form of outer join is supported,
622            otherwise <FALSE/>.
623            @throws SQLException
624            if a database access error occurs.
625     */
626    boolean supportsOuterJoins() raises (SQLException);
627    //-------------------------------------------------------------------------
628
629    /** @returns
630            <TRUE/>, if full nested outer joins are supported,
631            otherwise <FALSE/>.
632            @throws SQLException
633            if a database access error occurs.
634     */
635    boolean supportsFullOuterJoins() raises (SQLException);
636    //-------------------------------------------------------------------------
637
638    /** @returns
639            <TRUE/>, if there is limited support for outer joins.
640            (This will be <TRUE/> if supportFullOuterJoins is <TRUE/>.)
641            <FALSE/> is returned otherwise.
642            @throws SQLException
643            if a database access error occurs.
644     */
645    boolean supportsLimitedOuterJoins() raises (SQLException);
646    //-------------------------------------------------------------------------
647
648    /** return the database vendor's preferred term for "schema"
649        @returns
650            <TRUE/> if so
651        @throws SQLException
652            if a database access error occurs.
653     */
654    string getSchemaTerm() raises (SQLException);
655    //-------------------------------------------------------------------------
656
657    /** return the database vendor's preferred term for "procedure"
658        @returns
659            <TRUE/> if so
660        @throws SQLException
661            if a database access error occurs.
662     */
663    string getProcedureTerm() raises (SQLException);
664    //-------------------------------------------------------------------------
665
666    /** return the database vendor's preferred term for "catalog"
667        @returns
668            <TRUE/> if so
669        @throws SQLException
670            if a database access error occurs.
671     */
672    string getCatalogTerm() raises (SQLException);
673    //-------------------------------------------------------------------------
674
675    /** Does a catalog appear at the start of a qualified table name?
676        (Otherwise it appears at the end)
677        @returns
678            <TRUE/> if so
679        @throws SQLException
680            if a database access error occurs.
681     */
682    boolean isCatalogAtStart() raises (SQLException);
683    //-------------------------------------------------------------------------
684
685    /** return the separator between catalog and table name
686        @returns
687            <TRUE/> if so
688        @throws SQLException
689            if a database access error occurs.
690     */
691    string getCatalogSeparator() raises (SQLException);
692    //-------------------------------------------------------------------------
693
694    /** Can a schema name be used in a data manipulation statement?
695        @returns
696            <TRUE/> if so
697        @throws SQLException
698            if a database access error occurs.
699     */
700    boolean supportsSchemasInDataManipulation() raises (SQLException);
701    //-------------------------------------------------------------------------
702
703    /** Can a schema name be used in a procedure call statement?
704        @returns
705            <TRUE/> if so
706        @throws SQLException
707            if a database access error occurs.
708     */
709    boolean supportsSchemasInProcedureCalls() raises (SQLException);
710    //-------------------------------------------------------------------------
711
712    /** Can a schema name be used in a table definition statement?
713        @returns
714            <TRUE/> if so
715        @throws SQLException
716            if a database access error occurs.
717     */
718    boolean supportsSchemasInTableDefinitions() raises (SQLException);
719    //-------------------------------------------------------------------------
720
721    /** Can a schema name be used in an index definition statement?
722        @returns
723            <TRUE/> if so
724        @throws SQLException
725            if a database access error occurs.
726     */
727    boolean supportsSchemasInIndexDefinitions() raises (SQLException);
728    //-------------------------------------------------------------------------
729
730    /** Can a schema name be used in a privilege definition statement?
731        @returns
732            <TRUE/> if so
733        @throws SQLException
734            if a database access error occurs.
735     */
736    boolean supportsSchemasInPrivilegeDefinitions()
737        raises (SQLException);
738    //-------------------------------------------------------------------------
739
740    /** Can a catalog name be used in a data manipulation statement?
741        @returns
742            <TRUE/> if so
743        @throws SQLException
744            if a database access error occurs.
745     */
746    boolean supportsCatalogsInDataManipulation() raises (SQLException);
747    //-------------------------------------------------------------------------
748
749    /** Can a catalog name be used in a procedure call statement?
750        @returns
751            <TRUE/> if so
752        @throws SQLException
753            if a database access error occurs.
754     */
755    boolean supportsCatalogsInProcedureCalls() raises (SQLException);
756    //-------------------------------------------------------------------------
757
758    /** Can a catalog name be used in a table definition statement?
759        @returns
760            <TRUE/> if so
761        @throws SQLException
762            if a database access error occurs.
763     */
764    boolean supportsCatalogsInTableDefinitions() raises (SQLException);
765    //-------------------------------------------------------------------------
766
767    /** Can a catalog name be used in an index definition statement?
768        @returns
769            <TRUE/> if so
770        @throws SQLException
771            if a database access error occurs.
772     */
773    boolean supportsCatalogsInIndexDefinitions() raises (SQLException);
774    //-------------------------------------------------------------------------
775
776    /** Can a catalog name be used in a privilege definition statement?
777        @returns
778            <TRUE/> if so
779        @throws SQLException
780            if a database access error occurs.
781     */
782    boolean supportsCatalogsInPrivilegeDefinitions()
783        raises (SQLException);
784    //-------------------------------------------------------------------------
785
786    /** Is positioned DELETE supported?
787        @returns
788            <TRUE/> if so
789        @throws SQLException
790            if a database access error occurs.
791     */
792    boolean supportsPositionedDelete() raises (SQLException);
793    //-------------------------------------------------------------------------
794
795    /** Is positioned UPDATE supported?
796        @returns
797            <TRUE/> if so
798        @throws SQLException
799            if a database access error occurs.
800     */
801    boolean supportsPositionedUpdate() raises (SQLException);
802    //-------------------------------------------------------------------------
803
804    /** Is SELECT for UPDATE supported?
805        @returns
806            <TRUE/> if so
807        @throws SQLException
808            if a database access error occurs.
809     */
810    boolean supportsSelectForUpdate() raises (SQLException);
811    //-------------------------------------------------------------------------
812
813    /** Are stored procedure calls using the stored procedure escape
814        syntax supported?
815            @returns
816            <TRUE/> if so
817        @throws SQLException
818            if a database access error occurs.
819     */
820    boolean supportsStoredProcedures() raises (SQLException);
821    //-------------------------------------------------------------------------
822
823    /** Are subqueries in comparison expressions supported?
824        @returns
825            <TRUE/> if so
826        @throws SQLException
827            if a database access error occurs.
828     */
829    boolean supportsSubqueriesInComparisons() raises (SQLException);
830    //-------------------------------------------------------------------------
831
832    /** Are subqueries in 'exists' expressions supported?
833        @returns
834            <TRUE/> if so
835        @throws SQLException
836            if a database access error occurs.
837     */
838    boolean supportsSubqueriesInExists() raises (SQLException);
839    //-------------------------------------------------------------------------
840
841    /** Are subqueries in 'in' statements supported?
842        @returns
843            <TRUE/> if so
844        @throws SQLException
845            if a database access error occurs.
846     */
847    boolean supportsSubqueriesInIns() raises (SQLException);
848    //-------------------------------------------------------------------------
849
850    /** Are subqueries in quantified expressions supported?
851        @returns
852            <TRUE/> if so
853        @throws SQLException
854            if a database access error occurs.
855     */
856    boolean supportsSubqueriesInQuantifieds() raises (SQLException);
857    //-------------------------------------------------------------------------
858
859    /** Are correlated subqueries supported?
860        @returns
861            <TRUE/> if so
862        @throws SQLException
863            if a database access error occurs.
864     */
865    boolean supportsCorrelatedSubqueries() raises (SQLException);
866    //-------------------------------------------------------------------------
867
868    /** Is SQL UNION supported?
869        @returns
870            <TRUE/> if so
871        @throws SQLException
872            if a database access error occurs.
873     */
874    boolean supportsUnion() raises (SQLException);
875    //-------------------------------------------------------------------------
876
877    /** Is SQL UNION ALL supported?
878        @returns
879            <TRUE/> if so
880        @throws SQLException
881            if a database access error occurs.
882     */
883    boolean supportsUnionAll() raises (SQLException);
884    //-------------------------------------------------------------------------
885
886    /** Can cursors remain open across commits?
887        @returns
888            <TRUE/> if so
889        @throws SQLException
890            if a database access error occurs.
891     */
892    boolean supportsOpenCursorsAcrossCommit() raises (SQLException);
893    //-------------------------------------------------------------------------
894
895    /** Can cursors remain open across rollbacks?
896        @returns
897            <TRUE/> if so
898        @throws SQLException
899            if a database access error occurs.
900     */
901    boolean supportsOpenCursorsAcrossRollback() raises (SQLException);
902    //-------------------------------------------------------------------------
903
904    /** Can statements remain open across commits?
905        @returns
906            <TRUE/> if so
907        @throws SQLException
908            if a database access error occurs.
909     */
910    boolean supportsOpenStatementsAcrossCommit() raises (SQLException);
911    //-------------------------------------------------------------------------
912
913    /** Can statements remain open across rollbacks?
914        @returns
915            <TRUE/> if so
916        @throws SQLException
917            if a database access error occurs.
918     */
919    boolean supportsOpenStatementsAcrossRollback()
920        raises (SQLException);
921    //-------------------------------------------------------------------------
922
923    /** return the maximal number of hex characters in an inline binary literal
924        @returns
925            <TRUE/> if so
926        @throws SQLException
927            if a database access error occurs.
928     */
929    long getMaxBinaryLiteralLength() raises (SQLException);
930    //-------------------------------------------------------------------------
931
932    /** return the max length for a character literal
933        @returns
934            <TRUE/> if so
935        @throws SQLException
936            if a database access error occurs.
937     */
938    long getMaxCharLiteralLength() raises (SQLException);
939    //-------------------------------------------------------------------------
940
941    /** return the limit on column name length
942        @returns
943            <TRUE/> if so
944        @throws SQLException
945            if a database access error occurs.
946     */
947    long getMaxColumnNameLength() raises (SQLException);
948    //-------------------------------------------------------------------------
949
950    /** return the maximum number of columns in a "GROUP BY" clause
951        @returns
952            <TRUE/> if so
953        @throws SQLException
954            if a database access error occurs.
955     */
956    long getMaxColumnsInGroupBy() raises (SQLException);
957    //-------------------------------------------------------------------------
958
959    /** return the maximum number of columns allowed in an index
960        @returns
961            <TRUE/> if so
962        @throws SQLException
963            if a database access error occurs.
964     */
965    long getMaxColumnsInIndex() raises (SQLException);
966    //-------------------------------------------------------------------------
967
968    /** return the maximum number of columns in an "ORDER BY" clause
969        @returns
970            <TRUE/> if so
971        @throws SQLException
972            if a database access error occurs.
973     */
974    long getMaxColumnsInOrderBy() raises (SQLException);
975    //-------------------------------------------------------------------------
976
977    /** return the maximum number of columns in a "SELECT" list
978        @returns
979            <TRUE/> if so
980        @throws SQLException
981            if a database access error occurs.
982     */
983    long getMaxColumnsInSelect() raises (SQLException);
984    //-------------------------------------------------------------------------
985
986    /** return the maximum number of columns in a table
987        @returns
988            <TRUE/> if so
989        @throws SQLException
990            if a database access error occurs.
991     */
992    long getMaxColumnsInTable() raises (SQLException);
993    //-------------------------------------------------------------------------
994
995    /** return the number of active connections at a time to this database.
996        @returns
997            <TRUE/> if so
998        @throws SQLException
999            if a database access error occurs.
1000     */
1001    long getMaxConnections() raises (SQLException);
1002    //-------------------------------------------------------------------------
1003
1004    /** return the maximum cursor name length
1005    @returns
1006            <TRUE/> if so
1007        @throws SQLException
1008            if a database access error occurs.
1009     */
1010    long getMaxCursorNameLength() raises (SQLException);
1011    //-------------------------------------------------------------------------
1012
1013    /** return the maximum length of an index (in bytes)
1014        @returns
1015            <TRUE/> if so
1016        @throws SQLException
1017            if a database access error occurs.
1018     */
1019    long getMaxIndexLength() raises (SQLException);
1020    //-------------------------------------------------------------------------
1021
1022    /** return the maximum length allowed for a schema name
1023        @returns
1024            <TRUE/> if so
1025        @throws SQLException
1026            if a database access error occurs.
1027     */
1028    long getMaxSchemaNameLength() raises (SQLException);
1029    //-------------------------------------------------------------------------
1030
1031    /** return the maximum length of a procedure name
1032        @returns
1033            <TRUE/> if so
1034        @throws SQLException
1035            if a database access error occurs.
1036     */
1037    long getMaxProcedureNameLength() raises (SQLException);
1038    //-------------------------------------------------------------------------
1039
1040    /** return the maximum length of a catalog name
1041        @returns
1042            <TRUE/> if so
1043        @throws SQLException
1044            if a database access error occurs.
1045     */
1046    long getMaxCatalogNameLength() raises (SQLException);
1047    //-------------------------------------------------------------------------
1048
1049    /** return the maximum length of a single row.
1050    @returns
1051            <TRUE/> if so
1052        @throws SQLException
1053            if a database access error occurs.
1054     */
1055    long getMaxRowSize() raises (SQLException);
1056    //-------------------------------------------------------------------------
1057
1058    /** Did getMaxRowSize() include LONGVARCHAR and LONGVARBINARY
1059        blobs?
1060        @returns
1061            <TRUE/> if so
1062        @throws SQLException
1063            if a database access error occurs.
1064     */
1065    boolean doesMaxRowSizeIncludeBlobs() raises (SQLException);
1066    //-------------------------------------------------------------------------
1067
1068    /** return the maximum length of a SQL statement
1069        @returns
1070            <TRUE/> if so
1071        @throws SQLException
1072            if a database access error occurs.
1073     */
1074    long getMaxStatementLength() raises (SQLException);
1075    //-------------------------------------------------------------------------
1076
1077    /** return the maximal number of open active statements at one time to this database
1078        @returns
1079            <TRUE/> if so
1080        @throws SQLException
1081            if a database access error occurs.
1082     */
1083    long getMaxStatements() raises (SQLException);
1084    //-------------------------------------------------------------------------
1085
1086    /** return the maximum length of a table name
1087        @returns
1088            <TRUE/> if so
1089        @throws SQLException
1090            if a database access error occurs.
1091     */
1092    long getMaxTableNameLength() raises (SQLException);
1093    //-------------------------------------------------------------------------
1094
1095    /** return the maximum number of tables in a SELECT statement
1096        @returns
1097            <TRUE/> if so
1098        @throws SQLException
1099            if a database access error occurs.
1100     */
1101    long getMaxTablesInSelect() raises (SQLException);
1102    //-------------------------------------------------------------------------
1103
1104    /** return the maximum length of a user name
1105        @returns
1106            <TRUE/> if so
1107        @throws SQLException
1108            if a database access error occurs.
1109     */
1110    long getMaxUserNameLength() raises (SQLException);
1111    //-------------------------------------------------------------------------
1112
1113    /** return the database default transaction isolation level.
1114        The values are defined in
1115        <type scope="com::sun::star::sdbc">TransactionIsolation</type>.
1116        @returns
1117            <TRUE/> if so
1118        @throws SQLException
1119            if a database access error occurs.
1120        @see com::sun::star::sdbc::XConnection
1121     */
1122    long getDefaultTransactionIsolation() raises (SQLException);
1123    //-------------------------------------------------------------------------
1124
1125    /** support the Database transactions?
1126        If not, invoking the method
1127        <member scope="com::sun::star::sdbc">XConnection::commit()</member>
1128        is a noop and the
1129        isolation level is TransactionIsolation_NONE.
1130        @returns
1131            <TRUE/> if so
1132        @throws SQLException
1133            if a database access error occurs.
1134     */
1135    boolean supportsTransactions() raises (SQLException);
1136    //-------------------------------------------------------------------------
1137
1138    /** Does this database support the given transaction isolation level?
1139        @returns
1140            <TRUE/> if so
1141        @throws SQLException
1142            if a database access error occurs.
1143 @see com::sun::star::sdbc::Connection
1144     */
1145    boolean supportsTransactionIsolationLevel([in]long level)
1146                            raises (SQLException);
1147    //-------------------------------------------------------------------------
1148
1149    /** support the Database both data definition and data manipulation statements
1150        within a transaction?
1151        @returns
1152            <TRUE/> if so
1153        @throws SQLException
1154            if a database access error occurs.
1155<!-- JRH: Unclear on the intent of these many support questions.
1156        If asking, it should state, "Does the Database support both ....?
1157        If declaring, it should state something like the following:
1158
1159        metadata:   supportsDataDefinitionAndDataManipulationTransactions
1160
1161    "provides support for both data definition and data manipulation statements within a transaction."
1162 -->     */
1163    boolean supportsDataDefinitionAndDataManipulationTransactions()
1164                             raises (SQLException);
1165    //-------------------------------------------------------------------------
1166
1167    /** are only data manipulation statements within a transaction
1168        supported?
1169        @returns
1170            <TRUE/> if so
1171        @throws SQLException
1172            if a database access error occurs.
1173     */
1174    boolean supportsDataManipulationTransactionsOnly()
1175                            raises (SQLException);
1176    //-------------------------------------------------------------------------
1177
1178    /** does a data definition statement within a transaction force the
1179        transaction to commit?
1180        @returns
1181            <TRUE/> if so
1182        @throws SQLException
1183            if a database access error occurs.
1184     */
1185    boolean dataDefinitionCausesTransactionCommit()
1186                            raises (SQLException);
1187    //-------------------------------------------------------------------------
1188
1189    /** is a data definition statement within a transaction ignored?
1190        @returns
1191            <TRUE/> if so
1192        @throws SQLException
1193            if a database access error occurs.
1194     */
1195    boolean dataDefinitionIgnoredInTransactions()
1196                            raises (SQLException);
1197    //-------------------------------------------------------------------------
1198
1199    /** Gets a description of the stored procedures available in a
1200        catalog.
1201
1202
1203        <p>
1204        Only procedure descriptions matching the schema and
1205        procedure name criteria are returned. They are ordered by
1206        PROCEDURE_SCHEM, and PROCEDURE_NAME.
1207        </p>
1208        <p>
1209        Each procedure description has the following columns:
1210        </p>
1211        <ol>
1212        <li>
1213        <b>PROCEDURE_CAT</b> string => procedure catalog (may be <NULL/>)
1214        </li>
1215        <li>
1216        <b>PROCEDURE_SCHEM</b> string => procedure schema (may be <NULL/>)
1217        </li>
1218        <li>
1219        <b>PROCEDURE_NAME</b> string => procedure name
1220        </li>
1221        <li> reserved for future use
1222        </li>
1223        <li> reserved for future use
1224        </li>
1225        <li> reserved for future use
1226        </li>
1227        <li>
1228        <b>REMARKS</b> string => explanatory comment on the procedure
1229        </li>
1230        <li>
1231        <b>PROCEDURE_TYPE</b> short => kind of procedure:
1232        <ul>
1233        <li> UNKNOWN - May return a result
1234        </li>
1235        <li> NO - Does not return a result
1236        </li>
1237        <li> RETURN - Returns a result
1238        </li>
1239        </ul>
1240        </li>
1241        </ol>
1242        @param catalog
1243            a catalog name; "" retrieves those without a catalog; <VOID/> means drop catalog name from the selection criteria
1244        @param schemaPattern
1245            a schema name pattern; "" retrieves those without a schema
1246        @param procedureNamePattern
1247            a procedure name pattern
1248        @returns
1249            each row is a procedure description
1250        @throws SQLException
1251            if a database access error occurs.
1252     */
1253    XResultSet getProcedures([in]any catalog, [in]string schemaPattern,
1254                    [in]string procedureNamePattern) raises (SQLException);
1255    //-------------------------------------------------------------------------
1256
1257    /** gets a description of a catalog's stored procedure parameters
1258        and result columns.
1259
1260
1261        <p>
1262        Only descriptions matching the schema, procedure and
1263        parameter name criteria are returned. They are ordered by
1264        PROCEDURE_SCHEM and PROCEDURE_NAME. Within this, the return value,
1265        if any, is first. Next are the parameter descriptions in call
1266        order. The column descriptions follow in column number order.
1267        </p>
1268        <p>Each row in the XResultSet is a parameter description or
1269        column description with the following fields:
1270        </p>
1271        <ol>
1272        <li>
1273        <b>PROCEDURE_CAT</b> string => procedure catalog (may be <NULL/>)
1274        </li>
1275        <li>
1276        <b>PROCEDURE_SCHEM</b> string => procedure schema (may be <NULL/>)
1277        </li>
1278        <li>
1279        <b>PROCEDURE_NAME</b> string => procedure name
1280        </li>
1281        <li>
1282        <b>COLUMN_NAME</b> string => column/parameter name
1283        </li>
1284        <li>
1285        <b>COLUMN_TYPE</b> Short => kind of column/parameter:
1286        <ul>
1287        <li> UNKNOWN - nobody knows
1288        </li>
1289        <li> IN - IN parameter
1290        </li>
1291        <li> INOUT - INOUT parameter
1292        </li>
1293        <li> OUT - OUT parameter
1294        </li>
1295        <li> RETURN - procedure return value
1296        </li>
1297        <li> RESULT - result column in XResultSet
1298        </li>
1299        </ul>
1300        </li>
1301        <li>
1302        <b>DATA_TYPE</b> short => SQL type from java.sql.Types
1303        </li>
1304        <li>
1305        <b>TYPE_NAME</b> string => SQL type name, for a UDT type the
1306        type name is fully qualified
1307        </li>
1308        <li>
1309        <b>PRECISION</b> long => precision
1310        </li>
1311        <li>
1312        <b>LENGTH</b> long => length in bytes of data
1313        </li>
1314        <li>
1315        <b>SCALE</b> short => scale
1316        </li>
1317        <li>
1318        <b>RADIX</b> short => radix
1319        </li>
1320        <li>
1321        <b>NULLABLE</b> short => can it contain NULL?
1322        <ul>
1323        <li> NO_NULLS - does not allow NULL values
1324        </li>
1325        <li> NULLABLE - allows NULL values
1326        </li>
1327        <li> NULLABLE_UNKNOWN - nullability unknown
1328        </li>
1329        </ul>
1330        </li>
1331        <li>
1332        <b>REMARKS</b> string => comment describing parameter/column
1333        </li>
1334        </ol>
1335        <p>
1336        <b>Note:</b> Some databases may not return the column
1337        descriptions for a procedure. Additional columns beyond
1338        REMARKS can be defined by the database.
1339        </p>
1340        @param catalog
1341            a catalog name; "" retrieves those without a catalog; <VOID/> means drop catalog name from the selection criteria
1342        @param schemaPattern
1343            a schema name pattern; "" retrieves those without a schema
1344        @param procedureNamePattern
1345            a procedure name pattern
1346        @param columnNamePattern
1347            a column name pattern
1348        @returns
1349            each row describes a stored procedure parameter or column
1350        @throws SQLException
1351            if a database access error occurs.
1352     */
1353    XResultSet getProcedureColumns([in]any catalog, [in]string schemaPattern,
1354                                   [in]string procedureNamePattern,
1355                                   [in]string columnNamePattern)
1356                        raises (SQLException);
1357    //-------------------------------------------------------------------------
1358
1359    /** gets a description of tables available in a catalog.
1360
1361
1362        <p>Only table descriptions matching the catalog, schema, table
1363        name, and type criteria are returned. They are ordered by
1364        TABLE_TYPE, TABLE_SCHEM, and TABLE_NAME.
1365        </p>
1366        <p>Each table description has the following columns:
1367        </p>
1368        <ol>
1369        <li>
1370        <b>TABLE_CAT</b> string => table catalog (may be <NULL/>)
1371        </li>
1372        <li>
1373        <b>TABLE_SCHEM</b> string => table schema (may be <NULL/>)
1374        </li>
1375        <li>
1376        <b>TABLE_NAME</b> string => table name
1377        </li>
1378        <li>
1379        <b>TABLE_TYPE</b> string => table type. Typical types are "TABLE",
1380        "VIEW", "SYSTEM TABLE", "GLOBAL TEMPORARY",
1381        "LOCAL TEMPORARY", "ALIAS", "SYNONYM".
1382        </li>
1383        <li>
1384        <b>REMARKS</b> string => explanatory comment on the table
1385        </li>
1386        </ol>
1387        <p>
1388        <b>Note:</b> Some databases may not return information for
1389        all tables.
1390        </p>
1391        @param catalog
1392            a catalog name; "" retrieves those without a catalog; <VOID/> means drop catalog name from the selection criteria
1393        @param schemaPattern
1394            a schema name pattern; "" retrieves those without a schema
1395        @param tableNamePattern
1396            a table name pattern
1397        @param types
1398            a list of table types to include
1399        @returns
1400            each row is a table description
1401        @throws SQLException
1402            if a database access error occurs.
1403     */
1404    XResultSet getTables([in]any catalog, [in]string schemaPattern,
1405        [in]string tableNamePattern, [in]sequence<string> types)
1406        raises (SQLException);
1407    //-------------------------------------------------------------------------
1408
1409    /** Gets the schema names available in this database. The results
1410        are ordered by schema name.
1411
1412
1413        <p>The schema column is:
1414        </p>
1415        <ol>
1416        <li>
1417        <b>TABLE_SCHEM</b> string => schema name
1418        </li>
1419        </ol>
1420        @returns
1421            each row has a single String column that is a schema name
1422        @throws SQLException
1423            if a database access error occurs.
1424     */
1425    XResultSet getSchemas() raises (SQLException);
1426    //-------------------------------------------------------------------------
1427
1428    /** gets the catalog names available in this database. The results
1429        are ordered by catalog name.
1430
1431
1432        <p>The catalog column is:
1433        </p>
1434        <ol>
1435        <li>
1436        <b>TABLE_CAT</b> string => catalog name
1437        </li>
1438        </ol>
1439        @returns
1440            each row has a single String column that is a catalog name
1441        @throws SQLException
1442            if a database access error occurs.
1443     */
1444    XResultSet getCatalogs() raises (SQLException);
1445    //-------------------------------------------------------------------------
1446
1447    /** gets the table types available in this database. The results
1448        are ordered by table type.
1449
1450
1451        <p>The table type is:
1452        </p>
1453        <ol>
1454        <li>
1455        <b>TABLE_TYPE</b> string => table type. Typical types are "TABLE",
1456        "VIEW", "SYSTEM TABLE", "GLOBAL TEMPORARY",
1457        "LOCAL TEMPORARY", "ALIAS", "SYNONYM".
1458        </li>
1459        </ol>
1460        @returns
1461            each row has a single String column that is a table type
1462        @throws SQLException
1463            if a database access error occurs.
1464     */
1465    XResultSet getTableTypes() raises (SQLException);
1466    //-------------------------------------------------------------------------
1467
1468    /** gets a description of table columns available in
1469        the specified catalog.
1470
1471
1472        <p>Only column descriptions matching the catalog, schema, table
1473        and column name criteria are returned. They are ordered by
1474        TABLE_SCHEM, TABLE_NAME, and ORDINAL_POSITION.
1475        </p>
1476        <p>Each column description has the following columns:
1477        </p>
1478        <ol>
1479        <li>
1480        <b>TABLE_CAT</b> string => table catalog (may be <NULL/>)
1481        </li>
1482        <li>
1483        <b>TABLE_SCHEM</b> string => table schema (may be <NULL/>)
1484        </li>
1485        <li>
1486        <b>TABLE_NAME</b> string => table name
1487        </li>
1488        <li>
1489        <b>COLUMN_NAME</b> string => column name
1490        </li>
1491        <li>
1492        <b>DATA_TYPE</b> short => SQL type from java.sql.Types
1493        </li>
1494        <li>
1495        <b>TYPE_NAME</b> string => Data source dependent type name,
1496        for a UDT the type name is fully qualified
1497        </li>
1498        <li>
1499        <b>COLUMN_SIZE</b> long => column size. For char or date
1500        types this is the maximum number of characters, for numeric or
1501        decimal types this is precision.
1502        </li>
1503        <li>
1504        <b>BUFFER_LENGTH</b> is not used.
1505        </li>
1506        <li>
1507        <b>DECIMAL_DIGITS</b> long => the number of fractional digits
1508        </li>
1509        <li>
1510        <b>NUM_PREC_RADIX</b> long => Radix (typically either 10 or 2)
1511        </li>
1512        <li>
1513        <b>NULLABLE</b> long => is NULL allowed?
1514        <ul>
1515        <li> NO_NULLS - might not allow NULL values
1516        </li>
1517        <li> NULABLE - definitely allows NULL values
1518        </li>
1519        <li> NULLABLE_UNKNOWN - nullability unknown
1520        </li>
1521        </ul>
1522        </li>
1523        <li>
1524        <b>REMARKS</b> string => comment describing column (may be <NULL/>)
1525        </li>
1526        <li>
1527        <b>COLUMN_DEF</b> string => default value (may be <NULL/>)
1528        </li>
1529        <li>
1530        <b>SQL_DATA_TYPE</b> long => unused
1531        </li>
1532        <li>
1533        <b>SQL_DATETIME_SUB</b> long => unused
1534        </li>
1535        <li>
1536        <b>CHAR_OCTET_LENGTH</b> long => for char types the
1537        maximum number of bytes in the column
1538        </li>
1539        <li>
1540        <b>ORDINAL_POSITION</b> int => index of column in table
1541        (starting at 1)
1542        </li>
1543        <li>
1544        <b>IS_NULLABLE</b> string => "NO" means column definitely
1545        does not allow NULL values; "YES" means the column might
1546        allow NULL values. An empty string means nobody knows.
1547        </li>
1548        </ol>
1549        @param catalog
1550            a catalog name; "" retrieves those without a catalog; <VOID/> means drop catalog name from the selection criteria
1551        @param schemaPattern
1552            a schema name pattern; "" retrieves those without a schema
1553        @param tableNamePattern
1554            a table name pattern
1555        @param columnNamePattern
1556            a column name pattern
1557        @returns
1558            each row is a column description
1559        @throws SQLException
1560            if a database access error occurs.
1561     */
1562    XResultSet getColumns([in]any catalog, [in]string schemaPattern,
1563        [in]string tableNamePattern, [in]string columnNamePattern)
1564                    raises (SQLException);
1565    //-------------------------------------------------------------------------
1566
1567    /** gets a description of the access rights for a table's columns.
1568
1569
1570        <p>
1571        Only privileges matching the column name criteria are
1572        returned. They are ordered by COLUMN_NAME and PRIVILEGE.
1573        </p>
1574        <p>Each privilige description has the following columns:
1575        </p>
1576        <ol>
1577        <li>
1578        <b>TABLE_CAT</b> string => table catalog (may be <NULL/>)
1579        </li>
1580        <li>
1581        <b>TABLE_SCHEM</b> string => table schema (may be <NULL/>)
1582        </li>
1583        <li>
1584        <b>TABLE_NAME</b> string => table name
1585        </li>
1586        <li>
1587        <b>COLUMN_NAME</b> string => column name
1588        </li>
1589        <li>
1590        <b>GRANTOR</b> => grantor of access (may be <NULL/>)
1591        </li>
1592        <li>
1593        <b>GRANTEE</b> string => grantee of access
1594        </li>
1595        <li>
1596        <b>PRIVILEGE</b> string => name of access (SELECT,
1597        INSERT, UPDATE, REFERENCES, ...)
1598        </li>
1599        <li>
1600        <b>IS_GRANTABLE</b> string => "YES" if grantee is permitted
1601        to grant to others; "NO" if not; <NULL/> if unknown
1602        </li>
1603        </ol>
1604        @param catalog
1605            a catalog name; "" retrieves those without a catalog; <VOID/> means drop catalog name from the selection criteria
1606        @param schema
1607            a schema name ; "" retrieves those without a schema
1608        @param table
1609            a table name
1610        @param columnNamePattern
1611            a column name pattern
1612        @returns
1613            each row is a column privilege description
1614        @throws SQLException
1615            if a database access error occurs.
1616     */
1617    XResultSet getColumnPrivileges([in]any catalog, [in]string schema,
1618        [in]string table, [in]string columnNamePattern) raises (SQLException);
1619    //-------------------------------------------------------------------------
1620
1621    /** gets a description of the access rights for each table available
1622        in a catalog. Note that a table privilege applies to one or
1623        more columns in the table. It would be wrong to assume that
1624        this priviledge applies to all columns (this may be <TRUE/> for
1625        some systems but is not <TRUE/> for all.)
1626
1627
1628        <p>Only privileges matching the schema and table name
1629        criteria are returned. They are ordered by TABLE_SCHEM,
1630        TABLE_NAME, and PRIVILEGE.
1631        </p>
1632        <p>Each privilige description has the following columns:
1633        </p>
1634        <ol>
1635        <li>
1636        <b>TABLE_CAT</b> string => table catalog (may be <NULL/>)
1637        </li>
1638        <li>
1639        <b>TABLE_SCHEM</b> string => table schema (may be <NULL/>)
1640        </li>
1641        <li>
1642        <b>TABLE_NAME</b> string => table name
1643        </li>
1644        <li>
1645        <b>GRANTOR</b> => grantor of access (may be <NULL/>)
1646        </li>
1647        <li>
1648        <b>GRANTEE</b> string => grantee of access
1649        </li>
1650        <li>
1651        <b>PRIVILEGE</b> string => name of access (SELECT,
1652        INSERT, UPDATE, REFERENCES, ...)
1653        </li>
1654        <li>
1655        <b>IS_GRANTABLE</b> string => "YES" if grantee is permitted
1656        to grant to others; "NO" if not; <NULL/> if unknown
1657        </li>
1658        </ol>
1659        @param catalog
1660            a catalog name; "" retrieves those without a catalog; <VOID/> means drop catalog name from the selection criteria
1661        @param schemaPattern
1662            a schema name pattern; "" retrieves those without a schema
1663        @param tableNamePattern
1664            a table name pattern
1665        @returns
1666            each row is a table privilege description
1667        @throws SQLException
1668            if a database access error occurs.
1669     */
1670    XResultSet getTablePrivileges([in]any catalog, [in]string schemaPattern,
1671                [in]string tableNamePattern) raises (SQLException);
1672    //-------------------------------------------------------------------------
1673
1674    /** gets a description of a table's optimal set of columns that
1675        uniquely identifies a row. They are ordered by SCOPE.
1676
1677
1678        <p>Each column description has the following columns:
1679        </p>
1680        <ol>
1681        <li>
1682        <b>SCOPE</b> short => actual scope of result
1683        <ul>
1684        <li> TEMPORARY - very temporary, while using row
1685        </li>
1686        <li> TRANSACTION - valid for remainder of current transaction
1687        </li>
1688        <li> SESSION - valid for remainder of current session
1689        </li>
1690        </ul>
1691        </li>
1692        <li>
1693        <b>COLUMN_NAME</b> string => column name
1694        </li>
1695        <li>
1696        <b>DATA_TYPE</b> short => SQL data type from java.sql.Types
1697        </li>
1698        <li>
1699        <b>TYPE_NAME</b> string => Data source dependent type name,
1700        for a UDT the type name is fully qualified
1701        </li>
1702        <li>
1703        <b>COLUMN_SIZE</b> long => precision
1704        </li>
1705        <li>
1706        <b>BUFFER_LENGTH</b> long => not used
1707        </li>
1708        <li>
1709        <b>DECIMAL_DIGITS</b> short  => scale
1710        </li>
1711        <li>
1712        <b>PSEUDO_COLUMN</b> short => is this a pseudo column
1713        like an Oracle ROWID
1714        <ul>
1715        <li> UNKNOWN - may or may not be pseudo column
1716        </li>
1717        <li> NOT_PSEUDO - is NOT a pseudo column
1718        </li>
1719        <li> PSEUDO - is a pseudo column
1720        </li>
1721        </ul>
1722        </li>
1723        </ol>
1724        @param catalog
1725            a catalog name; "" retrieves those without a catalog; <VOID/> means drop catalog name from the selection criteria
1726        @param schema
1727            a schema name; "" retrieves those without a schema
1728        @param table
1729            a table name
1730        @param scope
1731            the scope of interest; use same values as SCOPE
1732        @param nullable
1733            include columns that are nullable?
1734        @returns
1735            each row is a column description
1736        @throws SQLException
1737            if a database access error occurs.
1738     */
1739    XResultSet getBestRowIdentifier([in]any catalog, [in]string schema,
1740        [in]string table, [in]long scope, [in] boolean nullable)
1741        raises (SQLException);
1742    //-------------------------------------------------------------------------
1743
1744    /** gets a description of a table's columns that are automatically
1745        updated when any value in a row is updated. They are
1746        unordered.
1747
1748
1749        <p>Each column description has the following columns:
1750        </p>
1751        <ol>
1752        <li>
1753        <b>SCOPE</b> short => is not used
1754        </li>
1755        <li>
1756        <b>COLUMN_NAME</b> string => column name
1757        </li>
1758        <li>
1759        <b>DATA_TYPE</b> short => SQL data type from java.sql.Types
1760        </li>
1761        <li>
1762        <b>TYPE_NAME</b> string => Data source dependent type name
1763        </li>
1764        <li>
1765        <b>COLUMN_SIZE</b> long => precision
1766        </li>
1767        <li>
1768        <b>BUFFER_LENGTH</b> long => length of column value in bytes
1769        </li>
1770        <li>
1771        <b>DECIMAL_DIGITS</b> short  => scale
1772        </li>
1773        <li>
1774        <b>PSEUDO_COLUMN</b> short => is this a pseudo column
1775        like an Oracle ROWID
1776        <ul>
1777        <li> UNKNOWN - may or may not be pseudo column
1778        </li>
1779        <li> NOT_PSEUDO - is NOT a pseudo column
1780        </li>
1781        <li> PSEUDO - is a pseudo column
1782        </li>
1783        </ul>
1784        </li>
1785        </ol>
1786        @param catalog
1787            a catalog name; "" retrieves those without a catalog; <VOID/> means drop catalog name from the selection criteria
1788        @param schema
1789            a schema name; "" retrieves those without a schema
1790        @param table
1791            a table name
1792        @returns
1793            each row is a column description
1794        @throws SQLException
1795            if a database access error occurs.
1796     */
1797    XResultSet getVersionColumns([in]any catalog, [in]string schema,
1798                [in]string table) raises (SQLException);
1799    //-------------------------------------------------------------------------
1800
1801    /** gets a description of a table's primary key columns. They
1802        are ordered by COLUMN_NAME.
1803
1804
1805        <p>Each primary key column description has the following columns:
1806        </p>
1807        <ol>
1808        <li>
1809        <b>TABLE_CAT</b> string => table catalog (may be <NULL/>)
1810        </li>
1811        <li>
1812        <b>TABLE_SCHEM</b> string => table schema (may be <NULL/>)
1813        </li>
1814        <li>
1815        <b>TABLE_NAME</b> string => table name
1816        </li>
1817        <li>
1818        <b>COLUMN_NAME</b> string => column name
1819        </li>
1820        <li>
1821        <b>KEY_SEQ</b> short => sequence number within primary key
1822        </li>
1823        <li>
1824        <b>PK_NAME</b> string => primary key name (may be <NULL/>)
1825        </li>
1826        </ol>
1827        @param catalog
1828            a catalog name; "" retrieves those without a catalog; <VOID/> means drop catalog name from the selection criteria
1829        @param schema
1830            a schema name; "" retrieves those without a schema
1831        @param table
1832            a table name
1833        @returns
1834            each row is a primary key column description
1835        @throws SQLException
1836            if a database access error occurs.
1837     */
1838    XResultSet getPrimaryKeys([in]any catalog, [in]string schema,
1839                [in]string table) raises (SQLException);
1840    //-------------------------------------------------------------------------
1841
1842    /** gets a description of the primary key columns that are
1843        referenced by a table's foreign key columns (the primary keys
1844        imported by a table). They are ordered by PKTABLE_CAT,
1845        PKTABLE_SCHEM, PKTABLE_NAME, and KEY_SEQ.
1846
1847
1848        <p>Each primary key column description has the following columns:
1849        </p>
1850        <ol>
1851        <li>
1852        <b>PKTABLE_CAT</b> string => primary key table catalog
1853        being imported (may be <NULL/>)
1854        </li>
1855        <li>
1856        <b>PKTABLE_SCHEM</b> string => primary key table schema
1857        being imported (may be <NULL/>)
1858        </li>
1859        <li>
1860        <b>PKTABLE_NAME</b> string => primary key table name
1861        being imported
1862        </li>
1863        <li>
1864        <b>PKCOLUMN_NAME</b> string => primary key column name
1865        being imported
1866        </li>
1867        <li>
1868        <b>FKTABLE_CAT</b> string => foreign key table catalog (may be <NULL/>)
1869        </li>
1870        <li>
1871        <b>FKTABLE_SCHEM</b> string => foreign key table schema (may be <NULL/>)
1872        </li>
1873        <li>
1874        <b>FKTABLE_NAME</b> string => foreign key table name
1875        </li>
1876        <li>
1877        <b>FKCOLUMN_NAME</b> string => foreign key column name
1878        </li>
1879        <li>
1880        <b>KEY_SEQ</b> short => sequence number within foreign key
1881        </li>
1882        <li>
1883        <b>UPDATE_RULE</b> short => What happens to
1884        foreign key when primary is updated:
1885        <ul>
1886        <li> importedNoAction - do not allow update of primary
1887        key if it has been imported
1888        </li>
1889        <li> importedKeyCascade - change imported key to agree
1890        with primary key update
1891        </li>
1892        <li> importedKeySetNull - change imported key to NULL if
1893        its primary key has been updated
1894        </li>
1895        <li> importedKeySetDefault - change imported key to default values
1896        if its primary key has been updated
1897        </li>
1898        <li> importedKeyRestrict - same as importedKeyNoAction
1899        (for ODBC 2.x compatibility)
1900        </li>
1901        </ul>
1902        </li>
1903        <li>
1904        <b>DELETE_RULE</b> short => What happens to
1905        the foreign key when primary is deleted.
1906        <ul>
1907        <li> importedKeyNoAction - do not allow delete of primary
1908        key if it has been imported
1909        </li>
1910        <li> importedKeyCascade - delete rows that import a deleted key
1911        </li>
1912        <li> importedKeySetNull - change imported key to NULL if
1913        its primary key has been deleted
1914        </li>
1915        <li> importedKeyRestrict - same as importedKeyNoAction
1916        (for ODBC 2.x compatibility)
1917        </li>
1918        <li> importedKeySetDefault - change imported key to default if
1919        its primary key has been deleted
1920        </li>
1921        </ul>
1922        </li>
1923        <li>
1924        <b>FK_NAME</b> string => foreign key name (may be <NULL/>)
1925        </li>
1926        <li>
1927        <b>PK_NAME</b> string => primary key name (may be <NULL/>)
1928        </li>
1929        <li>
1930        <b>DEFERRABILITY</b> short => can the evaluation of foreign key
1931        constraints be deferred until commit
1932        <ul>
1933        <li> importedKeyInitiallyDeferred - see SQL92 for definition
1934        </li>
1935        <li> importedKeyInitiallyImmediate - see SQL92 for definition
1936        </li>
1937        <li> importedKeyNotDeferrable - see SQL92 for definition
1938        </li>
1939        </ul>
1940        </li>
1941        </ol>
1942        @param catalog
1943            a catalog name; "" retrieves those without a catalog; <VOID/> means drop catalog name from the selection criteria
1944        @param schema
1945            a schema name; "" retrieves those without a schema
1946        @param table
1947            a table name
1948        @returns
1949            each row is a primary key column description
1950        @throws SQLException
1951            if a database access error occurs.
1952     */
1953    XResultSet getImportedKeys([in]any catalog, [in]string schema,
1954                [in]string table) raises (SQLException);
1955    //-------------------------------------------------------------------------
1956
1957    /** gets a description of the foreign key columns that reference a
1958        table's primary key columns (the foreign keys exported by a
1959        table). They are ordered by FKTABLE_CAT, FKTABLE_SCHEM,
1960        FKTABLE_NAME, and KEY_SEQ.
1961
1962
1963        <p>Each foreign key column description has the following columns:
1964        </p>
1965        <ol>
1966        <li>
1967        <b>PKTABLE_CAT</b> string => primary key table catalog (may be <NULL/>)
1968        </li>
1969        <li>
1970        <b>PKTABLE_SCHEM</b> string => primary key table schema (may be <NULL/>)
1971        </li>
1972        <li>
1973        <b>PKTABLE_NAME</b> string => primary key table name
1974        </li>
1975        <li>
1976        <b>PKCOLUMN_NAME</b> string => primary key column name
1977        </li>
1978        <li>
1979        <b>FKTABLE_CAT</b> string => foreign key table catalog (may be <NULL/>)
1980        being exported (may be <NULL/>)
1981        </li>
1982        <li>
1983        <b>FKTABLE_SCHEM</b> string => foreign key table schema (may be <NULL/>)
1984        being exported (may be <NULL/>)
1985        </li>
1986        <li>
1987        <b>FKTABLE_NAME</b> string => foreign key table name
1988        being exported
1989        </li>
1990        <li>
1991        <b>FKCOLUMN_NAME</b> string => foreign key column name
1992        being exported
1993        </li>
1994        <li>
1995        <b>KEY_SEQ</b> short => sequence number within foreign key
1996        </li>
1997        <li>
1998        <b>UPDATE_RULE</b> short => What happens to
1999        foreign key when primary is updated:
2000        <ul>
2001        <li> NO_ACTION - do not allow update of primary
2002        key if it has been imported
2003        </li>
2004        <li> CASCADE - change imported key to agree
2005        with primary key update
2006        </li>
2007        <li> SET_NULL - change imported key to NULL if
2008        its primary key has been updated
2009        </li>
2010        <li> SET_DEFAULT - change imported key to default values
2011        if its primary key has been updated
2012        </li>
2013        <li> RESTRICT - same as importedKeyNoAction
2014        (for ODBC 2.x compatibility)
2015        </li>
2016        </ul>
2017        </li>
2018        <li>
2019        <b>DELETE_RULE</b> short => What happens to
2020        the foreign key when primary is deleted.
2021        <ul>
2022        <li> NO_ACTION - do not allow delete of primary
2023        key if it has been imported
2024        </li>
2025        <li> CASCADE - delete rows that import a deleted key
2026        </li>
2027        <li> SET_NULL - change imported key to NULL if
2028        its primary key has been deleted
2029        </li>
2030        <li> RESTRICT - same as importedKeyNoAction
2031        (for ODBC 2.x compatibility)
2032        </li>
2033        <li> SET_DEFAULT - change imported key to default if
2034        its primary key has been deleted
2035        </li>
2036        </ul>
2037        </li>
2038        <li>
2039        <b>FK_NAME</b> string => foreign key name (may be <NULL/>)
2040        </li>
2041        <li>
2042        <b>PK_NAME</b> string => primary key name (may be <NULL/>)
2043        </li>
2044        <li>
2045        <b>DEFERRABILITY</b> short => can the evaluation of foreign key
2046        constraints be deferred until commit
2047        <ul>
2048        <li> INITIALLY_DEFERRED - see SQL92 for definition
2049        </li>
2050        <li> INITIALLY_IMMEDIATE - see SQL92 for definition
2051        </li>
2052        <li> NONE - see SQL92 for definition
2053        </li>
2054        </ul>
2055        </li>
2056        </ol>
2057        @param catalog
2058            a catalog name; "" retrieves those without a catalog; <VOID/> means drop catalog name from the selection criteria
2059        @param schema
2060            a schema name; "" retrieves those without a schema
2061        @param table
2062            a table name
2063        @returns
2064            each row is a foreign key column description
2065        @throws SQLException
2066            if a database access error occurs.
2067     */
2068    XResultSet getExportedKeys([in]any catalog, [in]string schema,
2069                [in]string table) raises (SQLException);
2070    //-------------------------------------------------------------------------
2071
2072    /** gets a description of the foreign key columns in the foreign key
2073        table that reference the primary key columns of the primary key
2074        table (describe how one table imports another's key.) This
2075        should normally return a single foreign key/primary key pair
2076        (most tables only import a foreign key from a table once.). They
2077        are ordered by FKTABLE_CAT, FKTABLE_SCHEM, FKTABLE_NAME, and
2078        KEY_SEQ.
2079
2080
2081        <p>Each foreign key column description has the following columns:
2082        </p>
2083        <ol>
2084        <li>
2085        <b>PKTABLE_CAT</b> string => primary key table catalog (may be <NULL/>)
2086        </li>
2087        <li>
2088        <b>PKTABLE_SCHEM</b> string => primary key table schema (may be <NULL/>)
2089        </li>
2090        <li>
2091        <b>PKTABLE_NAME</b> string => primary key table name
2092        </li>
2093        <li>
2094        <b>PKCOLUMN_NAME</b> string => primary key column name
2095        </li>
2096        <li>
2097        <b>FKTABLE_CAT</b> string => foreign key table catalog (may be <NULL/>)
2098        being exported (may be <NULL/>)
2099        </li>
2100        <li>
2101        <b>FKTABLE_SCHEM</b> string => foreign key table schema (may be <NULL/>)
2102        being exported (may be <NULL/>)
2103        </li>
2104        <li>
2105        <b>FKTABLE_NAME</b> string => foreign key table name
2106        being exported
2107        </li>
2108        <li>
2109        <b>FKCOLUMN_NAME</b> string => foreign key column name
2110        being exported
2111        </li>
2112        <li>
2113        <b>KEY_SEQ</b> short => sequence number within foreign key
2114        </li>
2115        <li>
2116        <b>UPDATE_RULE</b> short => What happens to
2117        foreign key when primary is updated:
2118        <ul>
2119        <li> NO_ACTION - do not allow update of primary
2120        key if it has been imported
2121        </li>
2122        <li> CASCADE - change imported key to agree
2123        with primary key update
2124        </li>
2125        <li> SET_NULL - change imported key to NULL if
2126        its primary key has been updated
2127        </li>
2128        <li> SET_DEFAULT - change imported key to default values
2129        if its primary key has been updated
2130        </li>
2131        <li> RESTRICT - same as importedKeyNoAction
2132        (for ODBC 2.x compatibility)
2133        </li>
2134        </ul>
2135        </li>
2136        <li>
2137        <b>DELETE_RULE</b> short => What happens to
2138        the foreign key when primary is deleted.
2139        <ul>
2140        <li> NO_ACTION - do not allow delete of primary
2141        key if it has been imported
2142        </li>
2143        <li> CASCADE - delete rows that import a deleted key
2144        </li>
2145        <li> SET_NULL - change imported key to NULL if
2146        its primary key has been deleted
2147        </li>
2148        <li> RESTRICT - same as importedKeyNoAction
2149        (for ODBC 2.x compatibility)
2150        </li>
2151        <li> SET_DEFAULT - change imported key to default if
2152        its primary key has been deleted
2153        </li>
2154        </ul>
2155        </li>
2156        <li>
2157        <b>FK_NAME</b> string => foreign key name (may be <NULL/>)
2158        </li>
2159        <li>
2160        <b>PK_NAME</b> string => primary key name (may be <NULL/>)
2161        </li>
2162        <li>
2163        <b>DEFERRABILITY</b> short => can the evaluation of foreign key
2164        constraints be deferred until commit
2165        <ul>
2166        <li> INITIALLY_DEFERRED - see SQL92 for definition
2167        </li>
2168        <li> INITIALLY_IMMEDIATE - see SQL92 for definition
2169        </li>
2170        <li> NONE - see SQL92 for definition
2171        </li>
2172        </ul>
2173        </li>
2174        </ol>
2175        @param primaryCatalog
2176            a catalog name; "" retrieves those without a catalog; <VOID/> means drop catalog name from the selection criteria
2177        @param primarySchema
2178            a schema name; "" retrieves those without a schema
2179        @param primaryTable
2180            the table name that exports the key
2181        @param foreignCatalog
2182            a catalog name; "" retrieves those without a catalog; <VOID/> means drop catalog name from the selection criteria
2183        @param foreignSchema
2184            a schema name; "" retrieves those without a schema
2185        @param foreignTable
2186            the table name that imports the key
2187        @returns
2188            each row is a foreign key column description
2189        @throws SQLException
2190            if a database access error occurs.
2191     */
2192    XResultSet getCrossReference(
2193        [in]any primaryCatalog, [in]string primarySchema,
2194        [in]string primaryTable,
2195        [in]any foreignCatalog, [in]string foreignSchema,
2196        [in]string foreignTable) raises (SQLException);
2197    //-------------------------------------------------------------------------
2198
2199    /** gets a description of all the standard SQL types supported by
2200        this database. They are ordered by DATA_TYPE and then by how
2201        closely the data type maps to the corresponding SDBC SQL type.
2202
2203
2204
2205        <p>Each type description has the following columns:
2206        </p>
2207        <ol>
2208        <li>
2209        <b>TYPE_NAME</b> string => Type name
2210        </li>
2211        <li>
2212        <b>DATA_TYPE</b> short => SQL data type from java.sql.Types
2213        </li>
2214        <li>
2215        <b>PRECISION</b> long => maximum precision
2216        </li>
2217        <li>
2218        <b>LITERAL_PREFIX</b> string => prefix used to quote a literal
2219        (may be <NULL/>)
2220        </li>
2221        <li>
2222        <b>LITERAL_SUFFIX</b> string => suffix used to quote a literal
2223        (may be <NULL/>)
2224        </li>
2225        <li>
2226        <b>CREATE_PARAMS</b> string => parameters used in creating
2227        the type (may be <NULL/>)
2228        </li>
2229        <li>
2230        <b>NULLABLE</b> short => can you use NULL for this type?
2231        <ul>
2232        <li> NO_NULLS - does not allow NULL values
2233        </li>
2234        <li> NULLABLE - allows NULL values
2235        </li>
2236        <li> NULLABLE_UNKNOWN - nullability unknown
2237        </li>
2238        </ul>
2239        </li>
2240        <li>
2241        <b>CASE_SENSITIVE</b> boolean=> is it case sensitive?
2242        </li>
2243        <li>
2244        <b>SEARCHABLE</b> short => can you use "WHERE" based on this type:
2245        <ul>
2246        <li> NONE - No support
2247        </li>
2248        <li> CHAR - Only supported with WHERE .. LIKE
2249        </li>
2250        <li> BASIC - Supported except for WHERE .. LIKE
2251        </li>
2252        <li> FULL - Supported for all WHERE ..
2253        </li>
2254        </ul>
2255        </li>
2256        <li>
2257        <b>UNSIGNED_ATTRIBUTE</b> boolean => is it unsigned?
2258        </li>
2259        <li>
2260        <b>FIXED_PREC_SCALE</b> boolean => can it be a money value?
2261        </li>
2262        <li>
2263        <b>AUTO_INCREMENT</b> boolean => can it be used for an
2264        auto-increment value?
2265        </li>
2266        <li>
2267        <b>LOCAL_TYPE_NAME</b> string => localized version of type name
2268        (may be <NULL/>)
2269        </li>
2270        <li>
2271        <b>MINIMUM_SCALE</b> short => minimum scale supported
2272        </li>
2273        <li>
2274        <b>MAXIMUM_SCALE</b> short => maximum scale supported
2275        </li>
2276        <li>
2277        <b>SQL_DATA_TYPE</b> long => unused
2278        </li>
2279        <li>
2280        <b>SQL_DATETIME_SUB</b> long => unused
2281        </li>
2282        <li>
2283        <b>NUM_PREC_RADIX</b> long => usually 2 or 10
2284        </li>
2285        </ol>
2286        @returns
2287            each row is a SQL type description
2288        @throws SQLException
2289            if a database access error occurs.
2290     */
2291    XResultSet getTypeInfo() raises (SQLException);
2292    //-------------------------------------------------------------------------
2293
2294    /** gets a description of a table's indices and statistics. They are
2295        ordered by NON_UNIQUE, TYPE, INDEX_NAME, and ORDINAL_POSITION.
2296
2297
2298        <p>Each index column description has the following columns:
2299        </p>
2300        <ol>
2301        <li>
2302        <b>TABLE_CAT</b> string => table catalog (may be <NULL/>)
2303        </li>
2304        <li>
2305        <b>TABLE_SCHEM</b> string => table schema (may be <NULL/>)
2306        </li>
2307        <li>
2308        <b>TABLE_NAME</b> string => table name
2309        </li>
2310        <li>
2311        <b>NON_UNIQUE</b> boolean => Can index values be non-unique?
2312        <FALSE/> when TYPE is tableIndexStatistic
2313        </li>
2314        <li>
2315        <b>INDEX_QUALIFIER</b> string => index catalog (may be <NULL/>);
2316        <NULL/> when TYPE is tableIndexStatistic
2317        </li>
2318        <li>
2319        <b>INDEX_NAME</b> string => index name; <NULL/> when TYPE is
2320        tableIndexStatistic
2321        </li>
2322        <li>
2323        <b>TYPE</b> short => index type:
2324        <ul>
2325        <li> 0 - this identifies table statistics that are
2326        returned in conjuction with a table's index descriptions
2327        </li>
2328        <li> CLUSTERED - this is a clustered index
2329        </li>
2330        <li> HASHED - this is a hashed index
2331        </li>
2332        <li> OTHER - this is some other style of index
2333        </li>
2334        </ul>
2335        </li>
2336        <li>
2337        <b>ORDINAL_POSITION</b> short => column sequence number
2338        within index; zero when TYPE is tableIndexStatistic
2339        </li>
2340        <li>
2341        <b>COLUMN_NAME</b> string => column name; <NULL/> when TYPE is
2342        tableIndexStatistic
2343        </li>
2344        <li>
2345        <b>ASC_OR_DESC</b> string => column sort sequence, "A" => ascending,
2346        "D" => descending, may be <NULL/> if sort sequence is not supported;
2347        <NULL/> when TYPE is tableIndexStatistic
2348        </li>
2349        <li>
2350        <b>CARDINALITY</b> long => When TYPE is tableIndexStatistic, then
2351        this is the number of rows in the table; otherwise, it is the
2352        number of unique values in the index.
2353        </li>
2354        <li>
2355        <b>PAGES</b> long => When TYPE is  tableIndexStatisic then
2356        this is the number of pages used for the table, otherwise it
2357        is the number of pages used for the current index.
2358        </li>
2359        <li>
2360        <b>FILTER_CONDITION</b> string => Filter condition, if any.
2361        (may be <NULL/>)
2362        </li>
2363        </ol>
2364        @param catalog
2365            a catalog name; "" retrieves those without a catalog; <VOID/> means drop catalog name from the selection criteria
2366        @param schema
2367            a schema name; "" retrieves those without a schema
2368        @param table
2369            the table name that exports the key
2370        @param unique
2371            when <TRUE/>, return only indices for unique values; when <FALSE/>, return indices regardless of whether unique or not
2372        @param approximate
2373            when <TRUE/>, result is allowed to reflect approximate or out of data values; when <FALSE/>, results are requested to be accurate
2374        @returns
2375            each row is an index column description
2376        @throws SQLException
2377            if a database access error occurs.
2378     */
2379    XResultSet getIndexInfo([in]any catalog, [in]string schema, [in]string table,
2380            [in]boolean unique, [in]boolean approximate)
2381                    raises (SQLException);
2382    //-------------------------------------------------------------------------
2383
2384    /** Does the database support the given result set type?
2385        @param setType
2386            defined in
2387            <type scop="com::sun::star::sdbc">ResultSetType</type>
2388        @returns
2389            <TRUE/> if so
2390        @throws SQLException
2391            if a database access error occurs.
2392     */
2393    boolean supportsResultSetType([in]long setType) raises (SQLException);
2394    //-------------------------------------------------------------------------
2395
2396    /** Does the database support the concurrency type in combination
2397        with the given result set type?
2398        @param setType
2399            defined in
2400            <type scop="com::sun::star::sdbc">ResultSetType</type>
2401        @param concurrency
2402            defined in
2403            <type scop="com::sun::star::sdbc">ResultSetConcurrency</type>
2404        @returns
2405            <TRUE/> if so
2406        @throws SQLException
2407            if a database access error occurs.
2408     */
2409    boolean supportsResultSetConcurrency([in]long setType,
2410                                                  [in]long concurrency)
2411      raises (SQLException);
2412    //-------------------------------------------------------------------------
2413
2414    /** indicates whether a result set's own updates are visible.
2415        @param setType
2416            defined in
2417            <type scop="com::sun::star::sdbc">ResultSetType</type>
2418        @returns
2419            <TRUE/> if so
2420        @throws SQLException
2421            if a database access error occurs.
2422     */
2423    boolean ownUpdatesAreVisible([in]long setType) raises (SQLException);
2424    //-------------------------------------------------------------------------
2425
2426    /** indicates whether a result set's own deletes are visible.
2427        @param setType
2428            defined in
2429            <type scop="com::sun::star::sdbc">ResultSetType</type>
2430        @returns
2431            <TRUE/> if so
2432        @throws SQLException
2433            if a database access error occurs.
2434     */
2435    boolean ownDeletesAreVisible([in]long setType) raises (SQLException);
2436    //-------------------------------------------------------------------------
2437
2438    /** indicates whether a result set's own inserts are visible.
2439        @param setType
2440            defined in
2441            <type scop="com::sun::star::sdbc">ResultSetType</type>
2442        @returns
2443            <TRUE/> if so
2444        @throws SQLException
2445            if a database access error occurs.
2446     */
2447    boolean ownInsertsAreVisible([in]long setType) raises (SQLException);
2448    //-------------------------------------------------------------------------
2449
2450    /** indicates whether updates made by others are visible.
2451        @param setType
2452            defined in
2453            <type scop="com::sun::star::sdbc">ResultSetType</type>
2454        @returns
2455            <TRUE/> if so
2456        @throws SQLException
2457            if a database access error occurs.
2458     */
2459    boolean othersUpdatesAreVisible([in]long setType) raises (SQLException);
2460    //-------------------------------------------------------------------------
2461
2462    /** indicates whether deletes made by others are visible.
2463        @param setType
2464            defined in
2465            <type scop="com::sun::star::sdbc">ResultSetType</type>
2466        @returns
2467            <TRUE/> if so
2468        @throws SQLException
2469            if a database access error occurs.
2470     */
2471    boolean othersDeletesAreVisible([in]long setType) raises (SQLException);
2472    //-------------------------------------------------------------------------
2473
2474    /** indicates whether inserts made by others are visible.
2475        @param setType
2476            defined in
2477            <type scop="com::sun::star::sdbc">ResultSetType</type>
2478        @returns
2479            <TRUE/> if so
2480        @throws SQLException
2481            if a database access error occurs.
2482     */
2483    boolean othersInsertsAreVisible([in]long setType) raises (SQLException);
2484    //-------------------------------------------------------------------------
2485
2486    /** indicates whether or not a visible row update can be detected by
2487        calling the method
2488        <code>XResultSet.rowUpdated</code>.
2489        @param setType
2490            defined in
2491            <type scop="com::sun::star::sdbc">ResultSetType</type>
2492        @returns
2493            <TRUE/> if so
2494        @throws SQLException
2495            if a database access error occurs.
2496     */
2497    boolean updatesAreDetected([in]long setType) raises (SQLException);
2498    //-------------------------------------------------------------------------
2499
2500    /** indicates whether or not a visible row delete can be detected by
2501        calling
2502        <member scope="com::sun::star::sdbc">XResultSet::rowDeleted()</member>
2503        . If deletesAreDetected()
2504        returns <FALSE/>, then deleted rows are removed from the result set.
2505        @param setType
2506            defined in
2507            <type scop="com::sun::star::sdbc">ResultSetType</type>
2508        @returns
2509            <TRUE/> if so
2510        @throws SQLException
2511            if a database access error occurs.
2512     */
2513    boolean deletesAreDetected([in]long setType) raises (SQLException);
2514    //-------------------------------------------------------------------------
2515
2516    /** indicates whether or not a visible row insert can be detected
2517        by calling
2518        <member scope="com::sun::star::sdbc">XResultSet::rowInserted().</member>
2519        @param setType
2520            defined in
2521            <type scop="com::sun::star::sdbc">ResultSetType</type>
2522        @returns
2523            <TRUE/> if so
2524        @throws SQLException
2525            if a database access error occurs.
2526     */
2527    boolean insertsAreDetected([in]long setType) raises (SQLException);
2528    //-------------------------------------------------------------------------
2529
2530    /** indicates whether the driver supports batch updates.
2531        @returns
2532            <TRUE/> if so
2533        @throws SQLException
2534            if a database access error occurs.
2535     */
2536    boolean supportsBatchUpdates() raises (SQLException);
2537    //-------------------------------------------------------------------------
2538
2539    /** Gets a description of the user-defined types defined in a particular
2540        schema. Schema-specific UDTs may have type OBJECT, STRUCT,
2541        or DISTINCT.
2542
2543
2544        <p>Only types matching the catalog, schema, type name, and type
2545        criteria are returned. They are ordered by DATA_TYPE, TYPE_SCHEM,
2546        and TYPE_NAME. The type name parameter may be a fully-qualified
2547        name. In this case, the catalog and schemaPattern parameters are
2548        ignored.
2549        </p>
2550        <p>Each type description has the following columns:
2551        </p>
2552        <ol>
2553        <li>
2554        <b>TYPE_CAT</b> string => the type's catalog (may be <NULL/>)
2555        </li>
2556        <li>
2557        <b>TYPE_SCHEM</b> string => type's schema (may be <NULL/>)
2558        </li>
2559        <li>
2560        <b>TYPE_NAME</b> string => type name
2561        </li>
2562        <li>
2563        <b>CLASS_NAME</b> string => Java class name or service name
2564        </li>
2565        <li>
2566        <b>DATA_TYPE</b> string => type value.
2567        One of OBJECT, STRUCT, or DISTINCT
2568        </li>
2569        <li>
2570        <b>REMARKS</b> string => explanatory comment on the type
2571        </li>
2572        </ol>
2573        <p>
2574        <b>Note:</b> If the driver does not support UDTs, an empty
2575        result set is returned.
2576        </p>
2577        @param catalog
2578            a catalog name; "" retrieves those without a catalog; <VOID/> means drop catalog name from the selection criteria
2579        @param schemaPattern
2580            a schema name pattern; "" retrieves those without a schema
2581        @param typeNamePattern
2582            a type name pattern; may be a fully-qualified name
2583        @param types
2584            a list of user-named types to include (OBJECT, STRUCT, or DISTINCT)
2585        @returns
2586            each row is a type description
2587        @throws SQLException
2588            if a database access error occurs.
2589     */
2590    XResultSet getUDTs([in]any catalog, [in]string schemaPattern,
2591              [in]string typeNamePattern, [in]sequence<long> types)
2592      raises (SQLException);
2593    //-------------------------------------------------------------------------
2594
2595    /** retrieves the connection that produced this metadata object.
2596        @returns
2597            the Connection object
2598        @throws SQLException
2599            if a database access error occurs.
2600     */
2601    XConnection getConnection() raises (SQLException);
2602};
2603
2604//=============================================================================
2605
2606}; }; }; };
2607
2608/*===========================================================================
2609===========================================================================*/
2610#endif
2611