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