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