Line data Source code
1 : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 : /*
3 : * This file is part of the LibreOffice project.
4 : *
5 : * This Source Code Form is subject to the terms of the Mozilla Public
6 : * License, v. 2.0. If a copy of the MPL was not distributed with this
7 : * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 : *
9 : * This file incorporates work covered by the following license notice:
10 : *
11 : * Licensed to the Apache Software Foundation (ASF) under one or more
12 : * contributor license agreements. See the NOTICE file distributed
13 : * with this work for additional information regarding copyright
14 : * ownership. The ASF licenses this file to you under the Apache
15 : * License, Version 2.0 (the "License"); you may not use this file
16 : * except in compliance with the License. You may obtain a copy of
17 : * the License at http://www.apache.org/licenses/LICENSE-2.0 .
18 : */
19 :
20 : #include "odbc/ODatabaseMetaData.hxx"
21 : #include "odbc/OTools.hxx"
22 : #include "odbc/ODatabaseMetaDataResultSet.hxx"
23 : #include "FDatabaseMetaDataResultSet.hxx"
24 : #include <com/sun/star/sdbc/DataType.hpp>
25 : #include <com/sun/star/sdbc/ResultSetType.hpp>
26 : #include <com/sun/star/sdbc/ResultSetConcurrency.hpp>
27 : #include "odbc/OFunctiondefs.hxx"
28 : #include "stdio.h"
29 : #include "TPrivilegesResultSet.hxx"
30 : #include <connectivity/dbexception.hxx>
31 : #include <rtl/ustrbuf.hxx>
32 :
33 : using namespace connectivity::odbc;
34 : using namespace com::sun::star::uno;
35 : using namespace com::sun::star::lang;
36 : using namespace com::sun::star::beans;
37 : using namespace com::sun::star::sdbc;
38 :
39 0 : ODatabaseMetaData::ODatabaseMetaData(const SQLHANDLE _pHandle,OConnection* _pCon)
40 0 : : ::connectivity::ODatabaseMetaDataBase(_pCon,_pCon->getConnectionInfo())
41 : ,m_aConnectionHandle(_pHandle)
42 : ,m_pConnection(_pCon)
43 : ,m_bUseCatalog(sal_True)
44 0 : ,m_bOdbc3(sal_True)
45 : {
46 : OSL_ENSURE(m_pConnection,"ODatabaseMetaData::ODatabaseMetaData: No connection set!");
47 0 : if(!m_pConnection->isCatalogUsed())
48 : {
49 0 : osl_atomic_increment( &m_refCount );
50 : try
51 : {
52 0 : m_bUseCatalog = !(usesLocalFiles() || usesLocalFilePerTable());
53 0 : ::rtl::OUString sVersion = getDriverVersion();
54 0 : m_bOdbc3 = sVersion != ::rtl::OUString("02.50") && sVersion != ::rtl::OUString("02.00");
55 : }
56 0 : catch(SQLException& )
57 : { // doesn't matter here
58 : }
59 0 : osl_atomic_decrement( &m_refCount );
60 : }
61 0 : }
62 : // -------------------------------------------------------------------------
63 0 : ODatabaseMetaData::~ODatabaseMetaData()
64 : {
65 0 : }
66 : // -------------------------------------------------------------------------
67 0 : Reference< XResultSet > ODatabaseMetaData::impl_getTypeInfo_throw( )
68 : {
69 0 : Reference< XResultSet > xRef;
70 : try
71 : {
72 0 : ODatabaseMetaDataResultSet* pResult = new ODatabaseMetaDataResultSet(m_pConnection);
73 0 : xRef = pResult;
74 0 : pResult->openTypeInfo();
75 : }
76 0 : catch(SQLException&)
77 : {
78 0 : xRef = new ::connectivity::ODatabaseMetaDataResultSet(::connectivity::ODatabaseMetaDataResultSet::eTypeInfo);
79 : }
80 :
81 0 : return xRef;
82 : }
83 : // -------------------------------------------------------------------------
84 0 : Reference< XResultSet > SAL_CALL ODatabaseMetaData::getCatalogs( ) throw(SQLException, RuntimeException)
85 : {
86 0 : Reference< XResultSet > xRef;
87 0 : if(!m_bUseCatalog)
88 : {
89 0 : xRef = new ::connectivity::ODatabaseMetaDataResultSet(::connectivity::ODatabaseMetaDataResultSet::eCatalogs);
90 : }
91 : else
92 : {
93 : try
94 : {
95 0 : ODatabaseMetaDataResultSet* pResult = new ODatabaseMetaDataResultSet(m_pConnection);
96 0 : xRef = pResult;
97 0 : pResult->openCatalogs();
98 : }
99 0 : catch(SQLException&)
100 : {
101 0 : xRef = new ::connectivity::ODatabaseMetaDataResultSet(::connectivity::ODatabaseMetaDataResultSet::eCatalogs);
102 : }
103 : }
104 :
105 0 : return xRef;
106 : }
107 : // -------------------------------------------------------------------------
108 0 : ::rtl::OUString ODatabaseMetaData::impl_getCatalogSeparator_throw( )
109 : {
110 0 : ::rtl::OUString aVal;
111 0 : if ( m_bUseCatalog )
112 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_CATALOG_NAME_SEPARATOR,aVal,*this,m_pConnection->getTextEncoding());
113 :
114 0 : return aVal;
115 : }
116 : // -------------------------------------------------------------------------
117 0 : Reference< XResultSet > SAL_CALL ODatabaseMetaData::getSchemas( ) throw(SQLException, RuntimeException)
118 : {
119 0 : Reference< XResultSet > xRef;
120 : try
121 : {
122 0 : ODatabaseMetaDataResultSet* pResult = new ODatabaseMetaDataResultSet(m_pConnection);
123 0 : xRef = pResult;
124 0 : pResult->openSchemas();
125 : }
126 0 : catch(SQLException&)
127 : {
128 0 : xRef = new ::connectivity::ODatabaseMetaDataResultSet(::connectivity::ODatabaseMetaDataResultSet::eSchemas);
129 : }
130 0 : return xRef;
131 : }
132 : // -------------------------------------------------------------------------
133 0 : Reference< XResultSet > SAL_CALL ODatabaseMetaData::getColumnPrivileges(
134 : const Any& catalog, const ::rtl::OUString& schema, const ::rtl::OUString& table,
135 : const ::rtl::OUString& columnNamePattern ) throw(SQLException, RuntimeException)
136 : {
137 0 : Reference< XResultSet > xRef;
138 : try
139 : {
140 0 : ODatabaseMetaDataResultSet* pResult = new ODatabaseMetaDataResultSet(m_pConnection);
141 0 : xRef = pResult;
142 0 : pResult->openColumnPrivileges(m_bUseCatalog ? catalog : Any(),schema,table,columnNamePattern);
143 : }
144 0 : catch(SQLException&)
145 : {
146 0 : xRef = new ::connectivity::ODatabaseMetaDataResultSet(::connectivity::ODatabaseMetaDataResultSet::eColumnPrivileges);
147 : }
148 0 : return xRef;
149 : }
150 : // -------------------------------------------------------------------------
151 0 : Reference< XResultSet > SAL_CALL ODatabaseMetaData::getColumns(
152 : const Any& catalog, const ::rtl::OUString& schemaPattern, const ::rtl::OUString& tableNamePattern,
153 : const ::rtl::OUString& columnNamePattern ) throw(SQLException, RuntimeException)
154 : {
155 0 : Reference< XResultSet > xRef;
156 : try
157 : {
158 0 : ODatabaseMetaDataResultSet* pResult = new ODatabaseMetaDataResultSet(m_pConnection);
159 0 : xRef = pResult;
160 0 : pResult->openColumns(m_bUseCatalog ? catalog : Any(),schemaPattern,tableNamePattern,columnNamePattern);
161 : }
162 0 : catch(SQLException&)
163 : {
164 0 : xRef = new ::connectivity::ODatabaseMetaDataResultSet(::connectivity::ODatabaseMetaDataResultSet::eColumns);
165 : }
166 0 : return xRef;
167 : }
168 : // -------------------------------------------------------------------------
169 0 : Reference< XResultSet > SAL_CALL ODatabaseMetaData::getTables(
170 : const Any& catalog, const ::rtl::OUString& schemaPattern,
171 : const ::rtl::OUString& tableNamePattern, const Sequence< ::rtl::OUString >& types ) throw(SQLException, RuntimeException)
172 : {
173 0 : Reference< XResultSet > xRef;
174 : try
175 : {
176 0 : ODatabaseMetaDataResultSet* pResult = new ODatabaseMetaDataResultSet(m_pConnection);
177 0 : xRef = pResult;
178 0 : pResult->openTables(m_bUseCatalog ? catalog : Any(),schemaPattern,tableNamePattern,types);
179 : }
180 0 : catch(SQLException&)
181 : {
182 0 : xRef = new ::connectivity::ODatabaseMetaDataResultSet(::connectivity::ODatabaseMetaDataResultSet::eTables);
183 : }
184 0 : return xRef;
185 : }
186 : // -------------------------------------------------------------------------
187 0 : Reference< XResultSet > SAL_CALL ODatabaseMetaData::getProcedureColumns(
188 : const Any& catalog, const ::rtl::OUString& schemaPattern,
189 : const ::rtl::OUString& procedureNamePattern, const ::rtl::OUString& columnNamePattern ) throw(SQLException, RuntimeException)
190 : {
191 0 : Reference< XResultSet > xRef;
192 : try
193 : {
194 0 : ODatabaseMetaDataResultSet* pResult = new ODatabaseMetaDataResultSet(m_pConnection);
195 0 : xRef = pResult;
196 0 : pResult->openProcedureColumns(m_bUseCatalog ? catalog : Any(),schemaPattern,procedureNamePattern,columnNamePattern);
197 : }
198 0 : catch(SQLException&)
199 : {
200 0 : xRef = new ::connectivity::ODatabaseMetaDataResultSet(::connectivity::ODatabaseMetaDataResultSet::eProcedureColumns);
201 : }
202 0 : return xRef;
203 : }
204 : // -------------------------------------------------------------------------
205 0 : Reference< XResultSet > SAL_CALL ODatabaseMetaData::getProcedures(
206 : const Any& catalog, const ::rtl::OUString& schemaPattern,
207 : const ::rtl::OUString& procedureNamePattern ) throw(SQLException, RuntimeException)
208 : {
209 0 : Reference< XResultSet > xRef;
210 : try
211 : {
212 0 : ODatabaseMetaDataResultSet* pResult = new ODatabaseMetaDataResultSet(m_pConnection);
213 0 : xRef = pResult;
214 0 : pResult->openProcedures(m_bUseCatalog ? catalog : Any(),schemaPattern,procedureNamePattern);
215 : }
216 0 : catch(SQLException&)
217 : {
218 0 : xRef = new ::connectivity::ODatabaseMetaDataResultSet(::connectivity::ODatabaseMetaDataResultSet::eProcedures);
219 : }
220 0 : return xRef;
221 : }
222 : // -------------------------------------------------------------------------
223 0 : Reference< XResultSet > SAL_CALL ODatabaseMetaData::getVersionColumns(
224 : const Any& catalog, const ::rtl::OUString& schema, const ::rtl::OUString& table ) throw(SQLException, RuntimeException)
225 : {
226 0 : Reference< XResultSet > xRef;
227 0 : bool bSuccess = false;
228 : try
229 : {
230 0 : if ( !m_pConnection->preventGetVersionColumns() )
231 : {
232 0 : ODatabaseMetaDataResultSet* pResult = new ODatabaseMetaDataResultSet(m_pConnection);
233 0 : xRef = pResult;
234 0 : pResult->openVersionColumns(m_bUseCatalog ? catalog : Any(),schema,table);
235 0 : bSuccess = true;
236 : }
237 : }
238 0 : catch(SQLException&)
239 : {
240 : }
241 :
242 0 : if ( !bSuccess )
243 : {
244 0 : xRef = new ::connectivity::ODatabaseMetaDataResultSet(::connectivity::ODatabaseMetaDataResultSet::eVersionColumns);
245 : }
246 :
247 0 : return xRef;
248 : }
249 : // -------------------------------------------------------------------------
250 0 : sal_Int32 SAL_CALL ODatabaseMetaData::getMaxBinaryLiteralLength( ) throw(SQLException, RuntimeException)
251 : {
252 : SQLUINTEGER nValue;
253 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_MAX_BINARY_LITERAL_LEN,nValue,*this);
254 0 : return nValue;
255 : }
256 : // -------------------------------------------------------------------------
257 0 : sal_Int32 SAL_CALL ODatabaseMetaData::getMaxRowSize( ) throw(SQLException, RuntimeException)
258 : {
259 : SQLUINTEGER nValue;
260 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_MAX_ROW_SIZE,nValue,*this);
261 0 : return nValue;
262 : }
263 : // -------------------------------------------------------------------------
264 0 : sal_Int32 SAL_CALL ODatabaseMetaData::getMaxCatalogNameLength( ) throw(SQLException, RuntimeException)
265 : {
266 : SQLUSMALLINT nValue;
267 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_MAX_CATALOG_NAME_LEN,nValue,*this);
268 0 : return nValue;
269 : }
270 : // -------------------------------------------------------------------------
271 0 : sal_Int32 SAL_CALL ODatabaseMetaData::getMaxCharLiteralLength( ) throw(SQLException, RuntimeException)
272 : {
273 : SQLUINTEGER nValue;
274 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_MAX_CHAR_LITERAL_LEN,nValue,*this);
275 0 : return nValue;
276 : }
277 : // -------------------------------------------------------------------------
278 0 : sal_Int32 SAL_CALL ODatabaseMetaData::getMaxColumnNameLength( ) throw(SQLException, RuntimeException)
279 : {
280 : SQLUSMALLINT nValue;
281 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_MAX_COLUMN_NAME_LEN,nValue,*this);
282 0 : return nValue;
283 : }
284 : // -------------------------------------------------------------------------
285 0 : sal_Int32 SAL_CALL ODatabaseMetaData::getMaxColumnsInIndex( ) throw(SQLException, RuntimeException)
286 : {
287 : SQLUSMALLINT nValue;
288 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_MAX_COLUMNS_IN_INDEX,nValue,*this);
289 0 : return nValue;
290 : }
291 : // -------------------------------------------------------------------------
292 0 : sal_Int32 SAL_CALL ODatabaseMetaData::getMaxCursorNameLength( ) throw(SQLException, RuntimeException)
293 : {
294 : SQLUSMALLINT nValue;
295 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_MAX_CURSOR_NAME_LEN,nValue,*this);
296 0 : return nValue;
297 : }
298 : // -------------------------------------------------------------------------
299 0 : sal_Int32 SAL_CALL ODatabaseMetaData::getMaxConnections( ) throw(SQLException, RuntimeException)
300 : {
301 : SQLUSMALLINT nValue;
302 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_MAX_DRIVER_CONNECTIONS/*SQL_ACTIVE_CONNECTIONS*/,nValue,*this);
303 0 : return nValue;
304 : }
305 : // -------------------------------------------------------------------------
306 0 : sal_Int32 SAL_CALL ODatabaseMetaData::getMaxColumnsInTable( ) throw(SQLException, RuntimeException)
307 : {
308 : SQLUSMALLINT nValue;
309 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_MAX_COLUMNS_IN_TABLE,nValue,*this);
310 0 : return nValue;
311 : }
312 : // -------------------------------------------------------------------------
313 0 : sal_Int32 SAL_CALL ODatabaseMetaData::getMaxStatementLength( ) throw(SQLException, RuntimeException)
314 : {
315 : SQLUINTEGER nValue;
316 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_MAX_STATEMENT_LEN,nValue,*this);
317 0 : return nValue;
318 : }
319 : // -------------------------------------------------------------------------
320 0 : sal_Int32 SAL_CALL ODatabaseMetaData::getMaxTableNameLength( ) throw(SQLException, RuntimeException)
321 : {
322 : SQLUSMALLINT nValue;
323 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_MAX_TABLE_NAME_LEN,nValue,*this);
324 0 : return nValue;
325 : }
326 : // -------------------------------------------------------------------------
327 0 : sal_Int32 ODatabaseMetaData::impl_getMaxTablesInSelect_throw( )
328 : {
329 : SQLUSMALLINT nValue;
330 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_MAX_TABLES_IN_SELECT,nValue,*this);
331 0 : return nValue;
332 : }
333 : // -------------------------------------------------------------------------
334 0 : Reference< XResultSet > SAL_CALL ODatabaseMetaData::getExportedKeys(
335 : const Any& catalog, const ::rtl::OUString& schema, const ::rtl::OUString& table ) throw(SQLException, RuntimeException)
336 : {
337 0 : Reference< XResultSet > xRef;
338 : try
339 : {
340 0 : ODatabaseMetaDataResultSet* pResult = new ODatabaseMetaDataResultSet(m_pConnection);
341 0 : xRef = pResult;
342 0 : pResult->openExportedKeys(m_bUseCatalog ? catalog : Any(),schema,table);
343 : }
344 0 : catch(SQLException&)
345 : {
346 0 : xRef = new ::connectivity::ODatabaseMetaDataResultSet(::connectivity::ODatabaseMetaDataResultSet::eExportedKeys);
347 : }
348 0 : return xRef;
349 : }
350 : // -------------------------------------------------------------------------
351 0 : Reference< XResultSet > SAL_CALL ODatabaseMetaData::getImportedKeys(
352 : const Any& catalog, const ::rtl::OUString& schema, const ::rtl::OUString& table ) throw(SQLException, RuntimeException)
353 : {
354 0 : Reference< XResultSet > xRef;
355 : try
356 : {
357 0 : ODatabaseMetaDataResultSet* pResult = new ODatabaseMetaDataResultSet(m_pConnection);
358 0 : xRef = pResult;
359 0 : pResult->openImportedKeys(m_bUseCatalog ? catalog : Any(),schema,table);
360 : }
361 0 : catch(SQLException&)
362 : {
363 0 : xRef = new ::connectivity::ODatabaseMetaDataResultSet(::connectivity::ODatabaseMetaDataResultSet::eImportedKeys);
364 : }
365 0 : return xRef;
366 : }
367 : // -------------------------------------------------------------------------
368 0 : Reference< XResultSet > SAL_CALL ODatabaseMetaData::getPrimaryKeys(
369 : const Any& catalog, const ::rtl::OUString& schema, const ::rtl::OUString& table ) throw(SQLException, RuntimeException)
370 : {
371 0 : Reference< XResultSet > xRef;
372 : try
373 : {
374 0 : ODatabaseMetaDataResultSet* pResult = new ODatabaseMetaDataResultSet(m_pConnection);
375 0 : xRef = pResult;
376 0 : pResult->openPrimaryKeys(m_bUseCatalog ? catalog : Any(),schema,table);
377 : }
378 0 : catch(SQLException&)
379 : {
380 0 : xRef = new ::connectivity::ODatabaseMetaDataResultSet(::connectivity::ODatabaseMetaDataResultSet::ePrimaryKeys);
381 : }
382 0 : return xRef;
383 : }
384 : // -------------------------------------------------------------------------
385 0 : Reference< XResultSet > SAL_CALL ODatabaseMetaData::getIndexInfo(
386 : const Any& catalog, const ::rtl::OUString& schema, const ::rtl::OUString& table,
387 : sal_Bool unique, sal_Bool approximate ) throw(SQLException, RuntimeException)
388 : {
389 0 : Reference< XResultSet > xRef;
390 : try
391 : {
392 0 : ODatabaseMetaDataResultSet* pResult = new ODatabaseMetaDataResultSet(m_pConnection);
393 0 : xRef = pResult;
394 0 : pResult->openIndexInfo(m_bUseCatalog ? catalog : Any(),schema,table,unique,approximate);
395 : }
396 0 : catch(SQLException&)
397 : {
398 0 : xRef = new ::connectivity::ODatabaseMetaDataResultSet(::connectivity::ODatabaseMetaDataResultSet::eIndexInfo);
399 : }
400 0 : return xRef;
401 : }
402 : // -------------------------------------------------------------------------
403 0 : Reference< XResultSet > SAL_CALL ODatabaseMetaData::getBestRowIdentifier(
404 : const Any& catalog, const ::rtl::OUString& schema, const ::rtl::OUString& table, sal_Int32 scope,
405 : sal_Bool nullable ) throw(SQLException, RuntimeException)
406 : {
407 0 : Reference< XResultSet > xRef;
408 : try
409 : {
410 0 : ODatabaseMetaDataResultSet* pResult = new ODatabaseMetaDataResultSet(m_pConnection);
411 0 : xRef = pResult;
412 0 : pResult->openBestRowIdentifier(m_bUseCatalog ? catalog : Any(),schema,table,scope,nullable);
413 : }
414 0 : catch(SQLException&)
415 : {
416 0 : xRef = new ::connectivity::ODatabaseMetaDataResultSet(::connectivity::ODatabaseMetaDataResultSet::eBestRowIdentifier);
417 : }
418 0 : return xRef;
419 : }
420 : // -------------------------------------------------------------------------
421 0 : Reference< XResultSet > SAL_CALL ODatabaseMetaData::getTablePrivileges(
422 : const Any& catalog, const ::rtl::OUString& schemaPattern, const ::rtl::OUString& tableNamePattern ) throw(SQLException, RuntimeException)
423 : {
424 0 : if ( m_pConnection->isIgnoreDriverPrivilegesEnabled() )
425 : {
426 0 : return new OResultSetPrivileges(this,catalog,schemaPattern,tableNamePattern);
427 : }
428 0 : ODatabaseMetaDataResultSet* pResult = new ODatabaseMetaDataResultSet(m_pConnection);
429 0 : Reference< XResultSet > xRef = pResult;
430 0 : pResult->openTablePrivileges(m_bUseCatalog ? catalog : Any(),schemaPattern,tableNamePattern);
431 0 : return xRef;
432 : }
433 : // -------------------------------------------------------------------------
434 0 : Reference< XResultSet > SAL_CALL ODatabaseMetaData::getCrossReference(
435 : const Any& primaryCatalog, const ::rtl::OUString& primarySchema,
436 : const ::rtl::OUString& primaryTable, const Any& foreignCatalog,
437 : const ::rtl::OUString& foreignSchema, const ::rtl::OUString& foreignTable ) throw(SQLException, RuntimeException)
438 : {
439 0 : Reference< XResultSet > xRef;
440 : try
441 : {
442 0 : ODatabaseMetaDataResultSet* pResult = new ODatabaseMetaDataResultSet(m_pConnection);
443 0 : xRef = pResult;
444 0 : pResult->openForeignKeys(m_bUseCatalog ? primaryCatalog : Any(),primarySchema.toChar() == '%' ? &primarySchema : NULL,&primaryTable,
445 0 : m_bUseCatalog ? foreignCatalog : Any(), foreignSchema.toChar() == '%' ? &foreignSchema : NULL,&foreignTable);
446 : }
447 0 : catch(SQLException&)
448 : {
449 0 : xRef = new ::connectivity::ODatabaseMetaDataResultSet(::connectivity::ODatabaseMetaDataResultSet::eCrossReference);
450 : }
451 0 : return xRef;
452 : }
453 : // -------------------------------------------------------------------------
454 0 : sal_Bool SAL_CALL ODatabaseMetaData::doesMaxRowSizeIncludeBlobs( ) throw(SQLException, RuntimeException)
455 : {
456 0 : ::rtl::OUString aVal;
457 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_MAX_ROW_SIZE_INCLUDES_LONG,aVal,*this,m_pConnection->getTextEncoding());
458 0 : return aVal.toChar() == 'Y';
459 : }
460 : // -------------------------------------------------------------------------
461 0 : sal_Bool SAL_CALL ODatabaseMetaData::storesLowerCaseQuotedIdentifiers( ) throw(SQLException, RuntimeException)
462 : {
463 : SQLUSMALLINT nValue;
464 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_QUOTED_IDENTIFIER_CASE,nValue,*this);
465 0 : return nValue == SQL_IC_LOWER;
466 : }
467 : // -------------------------------------------------------------------------
468 0 : sal_Bool SAL_CALL ODatabaseMetaData::storesLowerCaseIdentifiers( ) throw(SQLException, RuntimeException)
469 : {
470 : SQLUSMALLINT nValue;
471 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_IDENTIFIER_CASE,nValue,*this);
472 0 : return nValue == SQL_IC_LOWER;
473 : }
474 : // -------------------------------------------------------------------------
475 0 : sal_Bool ODatabaseMetaData::impl_storesMixedCaseQuotedIdentifiers_throw( )
476 : {
477 : SQLUSMALLINT nValue;
478 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_QUOTED_IDENTIFIER_CASE,nValue,*this);
479 0 : return nValue == SQL_IC_MIXED;
480 : }
481 : // -------------------------------------------------------------------------
482 0 : sal_Bool SAL_CALL ODatabaseMetaData::storesMixedCaseIdentifiers( ) throw(SQLException, RuntimeException)
483 : {
484 : SQLUSMALLINT nValue;
485 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_IDENTIFIER_CASE,nValue,*this);
486 0 : return nValue == SQL_IC_MIXED;
487 : }
488 : // -------------------------------------------------------------------------
489 0 : sal_Bool SAL_CALL ODatabaseMetaData::storesUpperCaseQuotedIdentifiers( ) throw(SQLException, RuntimeException)
490 : {
491 : SQLUSMALLINT nValue;
492 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_QUOTED_IDENTIFIER_CASE,nValue,*this);
493 0 : return nValue == SQL_IC_UPPER;
494 : }
495 : // -------------------------------------------------------------------------
496 0 : sal_Bool SAL_CALL ODatabaseMetaData::storesUpperCaseIdentifiers( ) throw(SQLException, RuntimeException)
497 : {
498 : SQLUSMALLINT nValue;
499 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_IDENTIFIER_CASE,nValue,*this);
500 0 : return nValue == SQL_IC_UPPER;
501 : }
502 : // -------------------------------------------------------------------------
503 0 : sal_Bool ODatabaseMetaData::impl_supportsAlterTableWithAddColumn_throw( )
504 : {
505 : SQLUINTEGER nValue;
506 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_ALTER_TABLE,nValue,*this);
507 0 : return (nValue & SQL_AT_ADD_COLUMN) == SQL_AT_ADD_COLUMN;
508 : }
509 : // -------------------------------------------------------------------------
510 0 : sal_Bool ODatabaseMetaData::impl_supportsAlterTableWithDropColumn_throw( )
511 : {
512 : SQLUINTEGER nValue;
513 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_ALTER_TABLE,nValue,*this);
514 : return ((nValue & SQL_AT_DROP_COLUMN) == SQL_AT_DROP_COLUMN) ||
515 : ((nValue & SQL_AT_DROP_COLUMN_CASCADE) == SQL_AT_DROP_COLUMN_CASCADE) ||
516 0 : ((nValue & SQL_AT_DROP_COLUMN_RESTRICT) == SQL_AT_DROP_COLUMN_RESTRICT);
517 : }
518 : // -------------------------------------------------------------------------
519 0 : sal_Int32 SAL_CALL ODatabaseMetaData::getMaxIndexLength( ) throw(SQLException, RuntimeException)
520 : {
521 : SQLUINTEGER nValue;
522 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_MAX_INDEX_SIZE,nValue,*this);
523 0 : return nValue;
524 : }
525 : // -------------------------------------------------------------------------
526 0 : sal_Bool SAL_CALL ODatabaseMetaData::supportsNonNullableColumns( ) throw(SQLException, RuntimeException)
527 : {
528 : SQLUSMALLINT nValue;
529 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_NON_NULLABLE_COLUMNS,nValue,*this);
530 0 : return nValue == SQL_NNC_NON_NULL;
531 : }
532 : // -------------------------------------------------------------------------
533 0 : ::rtl::OUString SAL_CALL ODatabaseMetaData::getCatalogTerm( ) throw(SQLException, RuntimeException)
534 : {
535 0 : ::rtl::OUString aVal;
536 0 : if(m_bUseCatalog)
537 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_CATALOG_TERM,aVal,*this,m_pConnection->getTextEncoding());
538 0 : return aVal;
539 : }
540 : // -------------------------------------------------------------------------
541 0 : ::rtl::OUString ODatabaseMetaData::impl_getIdentifierQuoteString_throw( )
542 : {
543 0 : ::rtl::OUString aVal;
544 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_IDENTIFIER_QUOTE_CHAR,aVal,*this,m_pConnection->getTextEncoding());
545 0 : return aVal;
546 : }
547 : // -------------------------------------------------------------------------
548 0 : ::rtl::OUString SAL_CALL ODatabaseMetaData::getExtraNameCharacters( ) throw(SQLException, RuntimeException)
549 : {
550 0 : ::rtl::OUString aVal;
551 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_SPECIAL_CHARACTERS,aVal,*this,m_pConnection->getTextEncoding());
552 0 : return aVal;
553 : }
554 : // -------------------------------------------------------------------------
555 0 : sal_Bool SAL_CALL ODatabaseMetaData::supportsDifferentTableCorrelationNames( ) throw(SQLException, RuntimeException)
556 : {
557 : SQLUSMALLINT nValue;
558 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_CORRELATION_NAME,nValue,*this);
559 0 : return nValue != SQL_CN_NONE;
560 : }
561 : // -------------------------------------------------------------------------
562 0 : sal_Bool ODatabaseMetaData::impl_isCatalogAtStart_throw( )
563 : {
564 0 : SQLUSMALLINT nValue=0;
565 0 : if ( m_bUseCatalog )
566 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_CATALOG_LOCATION,nValue,*this);
567 0 : return nValue == SQL_CL_START;
568 : }
569 : // -------------------------------------------------------------------------
570 0 : sal_Bool SAL_CALL ODatabaseMetaData::dataDefinitionIgnoredInTransactions( ) throw(SQLException, RuntimeException)
571 : {
572 : SQLUSMALLINT nValue;
573 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_TXN_CAPABLE,nValue,*this);
574 0 : return nValue == SQL_TC_DDL_IGNORE;
575 : }
576 : // -------------------------------------------------------------------------
577 0 : sal_Bool SAL_CALL ODatabaseMetaData::dataDefinitionCausesTransactionCommit( ) throw(SQLException, RuntimeException)
578 : {
579 : SQLUSMALLINT nValue;
580 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_TXN_CAPABLE,nValue,*this);
581 0 : return nValue == SQL_TC_DDL_COMMIT;
582 : }
583 : // -------------------------------------------------------------------------
584 0 : sal_Bool SAL_CALL ODatabaseMetaData::supportsDataManipulationTransactionsOnly( ) throw(SQLException, RuntimeException)
585 : {
586 : SQLUSMALLINT nValue;
587 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_TXN_CAPABLE,nValue,*this);
588 0 : return nValue == SQL_TC_DML;
589 : }
590 : // -------------------------------------------------------------------------
591 0 : sal_Bool SAL_CALL ODatabaseMetaData::supportsDataDefinitionAndDataManipulationTransactions( ) throw(SQLException, RuntimeException)
592 : {
593 : SQLUSMALLINT nValue;
594 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_TXN_CAPABLE,nValue,*this);
595 0 : return nValue == SQL_TC_ALL;
596 : }
597 : // -------------------------------------------------------------------------
598 0 : sal_Bool SAL_CALL ODatabaseMetaData::supportsPositionedDelete( ) throw(SQLException, RuntimeException)
599 : {
600 : SQLUINTEGER nValue;
601 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_DYNAMIC_CURSOR_ATTRIBUTES1,nValue,*this);
602 0 : return (nValue & SQL_CA1_POS_DELETE) == SQL_CA1_POS_DELETE;
603 : }
604 : // -------------------------------------------------------------------------
605 0 : sal_Bool SAL_CALL ODatabaseMetaData::supportsPositionedUpdate( ) throw(SQLException, RuntimeException)
606 : {
607 : SQLUINTEGER nValue;
608 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_DYNAMIC_CURSOR_ATTRIBUTES1,nValue,*this);
609 0 : return (nValue & SQL_CA1_POS_UPDATE) == SQL_CA1_POS_UPDATE;
610 : }
611 : // -------------------------------------------------------------------------
612 0 : sal_Bool SAL_CALL ODatabaseMetaData::supportsOpenStatementsAcrossRollback( ) throw(SQLException, RuntimeException)
613 : {
614 : SQLUSMALLINT nValue;
615 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_CURSOR_ROLLBACK_BEHAVIOR,nValue,*this);
616 0 : return nValue == SQL_CB_PRESERVE || nValue == SQL_CB_CLOSE;
617 : }
618 : // -------------------------------------------------------------------------
619 0 : sal_Bool SAL_CALL ODatabaseMetaData::supportsOpenStatementsAcrossCommit( ) throw(SQLException, RuntimeException)
620 : {
621 : SQLUSMALLINT nValue;
622 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_CURSOR_COMMIT_BEHAVIOR,nValue,*this);
623 0 : return nValue == SQL_CB_PRESERVE || nValue == SQL_CB_CLOSE;
624 : }
625 : // -------------------------------------------------------------------------
626 0 : sal_Bool SAL_CALL ODatabaseMetaData::supportsOpenCursorsAcrossCommit( ) throw(SQLException, RuntimeException)
627 : {
628 : SQLUSMALLINT nValue;
629 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_CURSOR_COMMIT_BEHAVIOR,nValue,*this);
630 0 : return nValue == SQL_CB_PRESERVE;
631 : }
632 : // -------------------------------------------------------------------------
633 0 : sal_Bool SAL_CALL ODatabaseMetaData::supportsOpenCursorsAcrossRollback( ) throw(SQLException, RuntimeException)
634 : {
635 : SQLUSMALLINT nValue;
636 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_CURSOR_ROLLBACK_BEHAVIOR,nValue,*this);
637 0 : return nValue == SQL_CB_PRESERVE;
638 : }
639 : // -------------------------------------------------------------------------
640 0 : sal_Bool SAL_CALL ODatabaseMetaData::supportsTransactionIsolationLevel( sal_Int32 level ) throw(SQLException, RuntimeException)
641 : {
642 : SQLUINTEGER nValue;
643 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_TXN_ISOLATION_OPTION,nValue,*this);
644 0 : return (nValue & static_cast<SQLUINTEGER>(level)) == static_cast<SQLUINTEGER>(level);
645 : }
646 : // -------------------------------------------------------------------------
647 0 : sal_Bool ODatabaseMetaData::impl_supportsSchemasInDataManipulation_throw( )
648 : {
649 : SQLUINTEGER nValue;
650 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_SCHEMA_USAGE,nValue,*this);
651 0 : return (nValue & SQL_SU_DML_STATEMENTS) == SQL_SU_DML_STATEMENTS;
652 : }
653 : // -------------------------------------------------------------------------
654 0 : sal_Bool SAL_CALL ODatabaseMetaData::supportsANSI92FullSQL( ) throw(SQLException, RuntimeException)
655 : {
656 : SQLUINTEGER nValue;
657 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_SQL_CONFORMANCE,nValue,*this);
658 0 : return nValue == SQL_SC_SQL92_FULL;
659 : }
660 : // -------------------------------------------------------------------------
661 0 : sal_Bool SAL_CALL ODatabaseMetaData::supportsANSI92EntryLevelSQL( ) throw(SQLException, RuntimeException)
662 : {
663 : SQLUINTEGER nValue;
664 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_SQL_CONFORMANCE,nValue,*this);
665 0 : return nValue == SQL_SC_SQL92_ENTRY;
666 : }
667 : // -------------------------------------------------------------------------
668 0 : sal_Bool SAL_CALL ODatabaseMetaData::supportsIntegrityEnhancementFacility( ) throw(SQLException, RuntimeException)
669 : {
670 0 : ::rtl::OUString aStr;
671 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_INTEGRITY,aStr,*this,m_pConnection->getTextEncoding());
672 0 : return aStr.toChar() == 'Y';
673 : }
674 : // -------------------------------------------------------------------------
675 0 : sal_Bool SAL_CALL ODatabaseMetaData::supportsSchemasInIndexDefinitions( ) throw(SQLException, RuntimeException)
676 : {
677 : SQLUINTEGER nValue;
678 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_SCHEMA_USAGE,nValue,*this);
679 0 : return (nValue & SQL_SU_INDEX_DEFINITION) == SQL_SU_INDEX_DEFINITION;
680 : }
681 : // -------------------------------------------------------------------------
682 0 : sal_Bool ODatabaseMetaData::impl_supportsSchemasInTableDefinitions_throw( )
683 : {
684 : SQLUINTEGER nValue;
685 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_SCHEMA_USAGE,nValue,*this);
686 0 : return (nValue & SQL_SU_TABLE_DEFINITION) == SQL_SU_TABLE_DEFINITION;
687 : }
688 : // -------------------------------------------------------------------------
689 0 : sal_Bool ODatabaseMetaData::impl_supportsCatalogsInTableDefinitions_throw( )
690 : {
691 0 : SQLUINTEGER nValue=0;
692 0 : if(m_bUseCatalog)
693 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_CATALOG_USAGE,nValue,*this);
694 0 : return (nValue & SQL_CU_TABLE_DEFINITION) == SQL_CU_TABLE_DEFINITION;
695 : }
696 : // -------------------------------------------------------------------------
697 0 : sal_Bool SAL_CALL ODatabaseMetaData::supportsCatalogsInIndexDefinitions( ) throw(SQLException, RuntimeException)
698 : {
699 0 : SQLUINTEGER nValue=0;
700 0 : if(m_bUseCatalog)
701 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_CATALOG_USAGE,nValue,*this);
702 0 : return (nValue & SQL_CU_INDEX_DEFINITION) == SQL_CU_INDEX_DEFINITION;
703 : }
704 : // -------------------------------------------------------------------------
705 0 : sal_Bool ODatabaseMetaData::impl_supportsCatalogsInDataManipulation_throw( )
706 : {
707 0 : SQLUINTEGER nValue=0;
708 0 : if(m_bUseCatalog)
709 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_CATALOG_USAGE,nValue,*this);
710 0 : return (nValue & SQL_CU_DML_STATEMENTS) == SQL_CU_DML_STATEMENTS;
711 : }
712 : // -------------------------------------------------------------------------
713 0 : sal_Bool SAL_CALL ODatabaseMetaData::supportsOuterJoins( ) throw(SQLException, RuntimeException)
714 : {
715 : SQLUINTEGER nValue;
716 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_OJ_CAPABILITIES,nValue,*this);
717 0 : return ((nValue & (SQL_OJ_FULL|SQL_OJ_LEFT|SQL_OJ_RIGHT|SQL_OJ_NESTED|SQL_OJ_NOT_ORDERED|SQL_OJ_ALL_COMPARISON_OPS|SQL_OJ_INNER)) != 0);
718 : }
719 : // -------------------------------------------------------------------------
720 0 : Reference< XResultSet > SAL_CALL ODatabaseMetaData::getTableTypes( ) throw(SQLException, RuntimeException)
721 : {
722 0 : Reference< XResultSet > xRef;
723 : try
724 : {
725 0 : ODatabaseMetaDataResultSet* pResult = new ODatabaseMetaDataResultSet(m_pConnection);
726 0 : xRef = pResult;
727 0 : pResult->openTablesTypes();
728 : }
729 0 : catch(SQLException&)
730 : {
731 0 : xRef = new ::connectivity::ODatabaseMetaDataResultSet(::connectivity::ODatabaseMetaDataResultSet::eTableTypes);
732 : }
733 0 : return xRef;
734 : }
735 : // -------------------------------------------------------------------------
736 0 : sal_Int32 ODatabaseMetaData::impl_getMaxStatements_throw( )
737 : {
738 : SQLUSMALLINT nValue;
739 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_MAX_CONCURRENT_ACTIVITIES,nValue,*this);
740 0 : return nValue;
741 : }
742 : // -------------------------------------------------------------------------
743 0 : sal_Int32 SAL_CALL ODatabaseMetaData::getMaxProcedureNameLength( ) throw(SQLException, RuntimeException)
744 : {
745 : SQLUSMALLINT nValue;
746 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_MAX_PROCEDURE_NAME_LEN,nValue,*this);
747 0 : return nValue;
748 : }
749 : // -------------------------------------------------------------------------
750 0 : sal_Int32 SAL_CALL ODatabaseMetaData::getMaxSchemaNameLength( ) throw(SQLException, RuntimeException)
751 : {
752 : SQLUSMALLINT nValue;
753 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_MAX_SCHEMA_NAME_LEN,nValue,*this);
754 0 : return nValue;
755 : }
756 : // -------------------------------------------------------------------------
757 0 : sal_Bool SAL_CALL ODatabaseMetaData::supportsTransactions( ) throw(SQLException, RuntimeException)
758 : {
759 : SQLUSMALLINT nValue;
760 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_TXN_CAPABLE,nValue,*this);
761 0 : return nValue != SQL_TC_NONE;
762 : }
763 : // -------------------------------------------------------------------------
764 0 : sal_Bool SAL_CALL ODatabaseMetaData::allProceduresAreCallable( ) throw(SQLException, RuntimeException)
765 : {
766 0 : ::rtl::OUString aValue;
767 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_ACCESSIBLE_PROCEDURES,aValue,*this,m_pConnection->getTextEncoding());
768 0 : return aValue.toChar() == 'Y';
769 : }
770 : // -------------------------------------------------------------------------
771 0 : sal_Bool SAL_CALL ODatabaseMetaData::supportsStoredProcedures( ) throw(SQLException, RuntimeException)
772 : {
773 0 : ::rtl::OUString aValue;
774 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_PROCEDURES,aValue,*this,m_pConnection->getTextEncoding());
775 0 : return aValue.toChar() == 'Y';
776 : }
777 : // -------------------------------------------------------------------------
778 0 : sal_Bool SAL_CALL ODatabaseMetaData::supportsSelectForUpdate( ) throw(SQLException, RuntimeException)
779 : {
780 : SQLUINTEGER nValue;
781 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_DYNAMIC_CURSOR_ATTRIBUTES1,nValue,*this);
782 0 : return (nValue & SQL_CA1_POSITIONED_UPDATE) == SQL_CA1_POSITIONED_UPDATE;
783 : }
784 : // -------------------------------------------------------------------------
785 0 : sal_Bool SAL_CALL ODatabaseMetaData::allTablesAreSelectable( ) throw(SQLException, RuntimeException)
786 : {
787 0 : ::rtl::OUString aValue;
788 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_ACCESSIBLE_TABLES,aValue,*this,m_pConnection->getTextEncoding());
789 0 : return aValue.toChar() == 'Y';
790 : }
791 : // -------------------------------------------------------------------------
792 0 : sal_Bool SAL_CALL ODatabaseMetaData::isReadOnly( ) throw(SQLException, RuntimeException)
793 : {
794 0 : return m_pConnection->isReadOnly();
795 : }
796 : // -------------------------------------------------------------------------
797 0 : sal_Bool SAL_CALL ODatabaseMetaData::usesLocalFiles( ) throw(SQLException, RuntimeException)
798 : {
799 : SQLUSMALLINT nValue;
800 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_FILE_USAGE,nValue,*this);
801 0 : return nValue == SQL_FILE_CATALOG;
802 : }
803 : // -------------------------------------------------------------------------
804 0 : sal_Bool SAL_CALL ODatabaseMetaData::usesLocalFilePerTable( ) throw(SQLException, RuntimeException)
805 : {
806 : SQLUSMALLINT nValue;
807 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_FILE_USAGE,nValue,*this);
808 0 : return nValue == SQL_FILE_TABLE;
809 : }
810 : // -------------------------------------------------------------------------
811 0 : sal_Bool SAL_CALL ODatabaseMetaData::supportsTypeConversion( ) throw(SQLException, RuntimeException)
812 : {
813 : SQLUINTEGER nValue;
814 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_CONVERT_FUNCTIONS,nValue,*this);
815 0 : return (nValue & SQL_FN_CVT_CONVERT) == SQL_FN_CVT_CONVERT;
816 : }
817 : // -------------------------------------------------------------------------
818 0 : sal_Bool SAL_CALL ODatabaseMetaData::nullPlusNonNullIsNull( ) throw(SQLException, RuntimeException)
819 : {
820 : SQLUSMALLINT nValue;
821 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_CONCAT_NULL_BEHAVIOR,nValue,*this);
822 0 : return nValue == SQL_CB_NULL;
823 : }
824 : // -------------------------------------------------------------------------
825 0 : sal_Bool SAL_CALL ODatabaseMetaData::supportsColumnAliasing( ) throw(SQLException, RuntimeException)
826 : {
827 0 : ::rtl::OUString aValue;
828 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_COLUMN_ALIAS,aValue,*this,m_pConnection->getTextEncoding());
829 0 : return aValue.toChar() == 'Y';
830 : }
831 : // -------------------------------------------------------------------------
832 0 : sal_Bool SAL_CALL ODatabaseMetaData::supportsTableCorrelationNames( ) throw(SQLException, RuntimeException)
833 : {
834 : SQLUSMALLINT nValue;
835 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_CORRELATION_NAME,nValue,*this);
836 0 : return nValue != SQL_CN_NONE;
837 : }
838 : // -------------------------------------------------------------------------
839 0 : sal_Bool SAL_CALL ODatabaseMetaData::supportsConvert( sal_Int32 fromType, sal_Int32 toType ) throw(SQLException, RuntimeException)
840 : {
841 0 : if(fromType == toType)
842 0 : return sal_True;
843 :
844 0 : SQLUINTEGER nValue=0;
845 0 : switch(fromType)
846 : {
847 : case DataType::BIT:
848 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_CONVERT_BIT,nValue,*this);
849 0 : break;
850 : case DataType::TINYINT:
851 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_CONVERT_TINYINT,nValue,*this);
852 0 : break;
853 : case DataType::SMALLINT:
854 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_CONVERT_SMALLINT,nValue,*this);
855 0 : break;
856 : case DataType::INTEGER:
857 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_CONVERT_INTEGER,nValue,*this);
858 0 : break;
859 : case DataType::BIGINT:
860 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_CONVERT_BIGINT,nValue,*this);
861 0 : break;
862 : case DataType::FLOAT:
863 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_CONVERT_FLOAT,nValue,*this);
864 0 : break;
865 : case DataType::REAL:
866 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_CONVERT_REAL,nValue,*this);
867 0 : break;
868 : case DataType::DOUBLE:
869 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_CONVERT_DOUBLE,nValue,*this);
870 0 : break;
871 : case DataType::NUMERIC:
872 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_CONVERT_NUMERIC,nValue,*this);
873 0 : break;
874 : case DataType::DECIMAL:
875 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_CONVERT_DECIMAL,nValue,*this);
876 0 : break;
877 : case DataType::CHAR:
878 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_CONVERT_CHAR,nValue,*this);
879 0 : break;
880 : case DataType::VARCHAR:
881 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_CONVERT_VARCHAR,nValue,*this);
882 0 : break;
883 : case DataType::LONGVARCHAR:
884 : case DataType::CLOB:
885 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_CONVERT_LONGVARCHAR,nValue,*this);
886 0 : break;
887 : case DataType::DATE:
888 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_CONVERT_DATE,nValue,*this);
889 0 : break;
890 : case DataType::TIME:
891 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_CONVERT_TIME,nValue,*this);
892 0 : break;
893 : case DataType::TIMESTAMP:
894 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_CONVERT_TIMESTAMP,nValue,*this);
895 0 : break;
896 : case DataType::BINARY:
897 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_CONVERT_BINARY,nValue,*this);
898 0 : break;
899 : case DataType::VARBINARY:
900 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_CONVERT_VARBINARY,nValue,*this);
901 0 : break;
902 : case DataType::LONGVARBINARY:
903 : case DataType::BLOB:
904 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_CONVERT_LONGVARBINARY,nValue,*this);
905 0 : break;
906 : case DataType::SQLNULL:
907 : // OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_CORRELATION_NAME,nValue,*this);
908 0 : break;
909 : case DataType::OTHER:
910 : // OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_CORRELATION_NAME,nValue,*this);
911 0 : break;
912 : case DataType::OBJECT:
913 : // OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_CORRELATION_NAME,nValue,*this);
914 0 : break;
915 : case DataType::DISTINCT:
916 : // OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_CORRELATION_NAME,nValue,*this);
917 0 : break;
918 : case DataType::STRUCT:
919 : // OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_CORRELATION_NAME,nValue,*this);
920 0 : break;
921 : case DataType::ARRAY:
922 : // OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_CORRELATION_NAME,nValue,*this);
923 0 : break;
924 : case DataType::REF:
925 : // OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_CORRELATION_NAME,nValue,*this);
926 0 : break;
927 : }
928 0 : sal_Bool bConvert = sal_False;
929 0 : switch(toType)
930 : {
931 : case DataType::BIT:
932 0 : bConvert = (nValue & SQL_CVT_BIT) == SQL_CVT_BIT;
933 0 : break;
934 : case DataType::TINYINT:
935 0 : bConvert = (nValue & SQL_CVT_TINYINT) == SQL_CVT_TINYINT;
936 0 : break;
937 : case DataType::SMALLINT:
938 0 : bConvert = (nValue & SQL_CVT_SMALLINT) == SQL_CVT_SMALLINT;
939 0 : break;
940 : case DataType::INTEGER:
941 0 : bConvert = (nValue & SQL_CVT_INTEGER) == SQL_CVT_INTEGER;
942 0 : break;
943 : case DataType::BIGINT:
944 0 : bConvert = (nValue & SQL_CVT_BIGINT) == SQL_CVT_BIGINT;
945 0 : break;
946 : case DataType::FLOAT:
947 0 : bConvert = (nValue & SQL_CVT_FLOAT) == SQL_CVT_FLOAT;
948 0 : break;
949 : case DataType::REAL:
950 0 : bConvert = (nValue & SQL_CVT_REAL) == SQL_CVT_REAL;
951 0 : break;
952 : case DataType::DOUBLE:
953 0 : bConvert = (nValue & SQL_CVT_DOUBLE) == SQL_CVT_DOUBLE;
954 0 : break;
955 : case DataType::NUMERIC:
956 0 : bConvert = (nValue & SQL_CVT_NUMERIC) == SQL_CVT_NUMERIC;
957 0 : break;
958 : case DataType::DECIMAL:
959 0 : bConvert = (nValue & SQL_CVT_DECIMAL) == SQL_CVT_DECIMAL;
960 0 : break;
961 : case DataType::CHAR:
962 0 : bConvert = (nValue & SQL_CVT_CHAR) == SQL_CVT_CHAR;
963 0 : break;
964 : case DataType::VARCHAR:
965 0 : bConvert = (nValue & SQL_CVT_VARCHAR) == SQL_CVT_VARCHAR;
966 0 : break;
967 : case DataType::LONGVARCHAR:
968 : case DataType::CLOB:
969 0 : bConvert = (nValue & SQL_CVT_LONGVARCHAR) == SQL_CVT_LONGVARCHAR;
970 0 : break;
971 : case DataType::DATE:
972 0 : bConvert = (nValue & SQL_CVT_DATE) == SQL_CVT_DATE;
973 0 : break;
974 : case DataType::TIME:
975 0 : bConvert = (nValue & SQL_CVT_TIME) == SQL_CVT_TIME;
976 0 : break;
977 : case DataType::TIMESTAMP:
978 0 : bConvert = (nValue & SQL_CVT_TIMESTAMP) == SQL_CVT_TIMESTAMP;
979 0 : break;
980 : case DataType::BINARY:
981 0 : bConvert = (nValue & SQL_CVT_BINARY) == SQL_CVT_BINARY;
982 0 : break;
983 : case DataType::VARBINARY:
984 0 : bConvert = (nValue & SQL_CVT_VARBINARY) == SQL_CVT_VARBINARY;
985 0 : break;
986 : case DataType::LONGVARBINARY:
987 : case DataType::BLOB:
988 0 : bConvert = (nValue & SQL_CVT_LONGVARBINARY) == SQL_CVT_LONGVARBINARY;
989 0 : break;
990 : }
991 :
992 0 : return bConvert;
993 : }
994 : // -------------------------------------------------------------------------
995 0 : sal_Bool SAL_CALL ODatabaseMetaData::supportsExpressionsInOrderBy( ) throw(SQLException, RuntimeException)
996 : {
997 0 : ::rtl::OUString aValue;
998 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_EXPRESSIONS_IN_ORDERBY,aValue,*this,m_pConnection->getTextEncoding());
999 0 : return aValue.toChar() == 'Y';
1000 : }
1001 : // -------------------------------------------------------------------------
1002 0 : sal_Bool SAL_CALL ODatabaseMetaData::supportsGroupBy( ) throw(SQLException, RuntimeException)
1003 : {
1004 : SQLUSMALLINT nValue;
1005 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_GROUP_BY,nValue,*this);
1006 0 : return nValue != SQL_GB_NOT_SUPPORTED;
1007 : }
1008 : // -------------------------------------------------------------------------
1009 0 : sal_Bool SAL_CALL ODatabaseMetaData::supportsGroupByBeyondSelect( ) throw(SQLException, RuntimeException)
1010 : {
1011 : SQLUSMALLINT nValue;
1012 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_GROUP_BY,nValue,*this);
1013 0 : return nValue != SQL_GB_GROUP_BY_CONTAINS_SELECT;
1014 : }
1015 : // -------------------------------------------------------------------------
1016 0 : sal_Bool SAL_CALL ODatabaseMetaData::supportsGroupByUnrelated( ) throw(SQLException, RuntimeException)
1017 : {
1018 : SQLUSMALLINT nValue;
1019 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_GROUP_BY,nValue,*this);
1020 0 : return nValue == SQL_GB_NO_RELATION;
1021 : }
1022 : // -------------------------------------------------------------------------
1023 0 : sal_Bool SAL_CALL ODatabaseMetaData::supportsMultipleTransactions( ) throw(SQLException, RuntimeException)
1024 : {
1025 0 : ::rtl::OUString aValue;
1026 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_MULTIPLE_ACTIVE_TXN,aValue,*this,m_pConnection->getTextEncoding());
1027 0 : return aValue.toChar() == 'Y';
1028 : }
1029 : // -------------------------------------------------------------------------
1030 0 : sal_Bool SAL_CALL ODatabaseMetaData::supportsMultipleResultSets( ) throw(SQLException, RuntimeException)
1031 : {
1032 0 : ::rtl::OUString aValue;
1033 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_MULT_RESULT_SETS,aValue,*this,m_pConnection->getTextEncoding());
1034 0 : return aValue.toChar() == 'Y';
1035 : }
1036 : // -------------------------------------------------------------------------
1037 0 : sal_Bool SAL_CALL ODatabaseMetaData::supportsLikeEscapeClause( ) throw(SQLException, RuntimeException)
1038 : {
1039 0 : ::rtl::OUString aValue;
1040 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_LIKE_ESCAPE_CLAUSE,aValue,*this,m_pConnection->getTextEncoding());
1041 0 : return aValue.toChar() == 'Y';
1042 : }
1043 : // -------------------------------------------------------------------------
1044 0 : sal_Bool SAL_CALL ODatabaseMetaData::supportsOrderByUnrelated( ) throw(SQLException, RuntimeException)
1045 : {
1046 0 : ::rtl::OUString aValue;
1047 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_ORDER_BY_COLUMNS_IN_SELECT,aValue,*this,m_pConnection->getTextEncoding());
1048 0 : return aValue.toChar() == 'N';
1049 : }
1050 : // -------------------------------------------------------------------------
1051 0 : sal_Bool SAL_CALL ODatabaseMetaData::supportsUnion( ) throw(SQLException, RuntimeException)
1052 : {
1053 : SQLUINTEGER nValue;
1054 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_UNION,nValue,*this);
1055 0 : return (nValue & SQL_U_UNION) == SQL_U_UNION;
1056 : }
1057 : // -------------------------------------------------------------------------
1058 0 : sal_Bool SAL_CALL ODatabaseMetaData::supportsUnionAll( ) throw(SQLException, RuntimeException)
1059 : {
1060 : SQLUINTEGER nValue;
1061 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_UNION,nValue,*this);
1062 0 : return (nValue & SQL_U_UNION_ALL) == SQL_U_UNION_ALL;
1063 : }
1064 : // -------------------------------------------------------------------------
1065 0 : sal_Bool SAL_CALL ODatabaseMetaData::supportsMixedCaseIdentifiers( ) throw(SQLException, RuntimeException)
1066 : {
1067 : SQLUSMALLINT nValue;
1068 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_IDENTIFIER_CASE,nValue,*this);
1069 0 : return nValue == SQL_IC_MIXED;
1070 : }
1071 : // -------------------------------------------------------------------------
1072 0 : sal_Bool ODatabaseMetaData::impl_supportsMixedCaseQuotedIdentifiers_throw( )
1073 : {
1074 : SQLUSMALLINT nValue;
1075 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_QUOTED_IDENTIFIER_CASE,nValue,*this);
1076 0 : return nValue == SQL_IC_MIXED;
1077 : }
1078 : // -------------------------------------------------------------------------
1079 0 : sal_Bool SAL_CALL ODatabaseMetaData::nullsAreSortedAtEnd( ) throw(SQLException, RuntimeException)
1080 : {
1081 : SQLUSMALLINT nValue;
1082 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_NULL_COLLATION,nValue,*this);
1083 0 : return nValue == SQL_NC_END;
1084 : }
1085 : // -------------------------------------------------------------------------
1086 0 : sal_Bool SAL_CALL ODatabaseMetaData::nullsAreSortedAtStart( ) throw(SQLException, RuntimeException)
1087 : {
1088 : SQLUSMALLINT nValue;
1089 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_NULL_COLLATION,nValue,*this);
1090 0 : return nValue == SQL_NC_START;
1091 : }
1092 : // -------------------------------------------------------------------------
1093 0 : sal_Bool SAL_CALL ODatabaseMetaData::nullsAreSortedHigh( ) throw(SQLException, RuntimeException)
1094 : {
1095 : SQLUSMALLINT nValue;
1096 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_NULL_COLLATION,nValue,*this);
1097 0 : return nValue == SQL_NC_HIGH;
1098 : }
1099 : // -------------------------------------------------------------------------
1100 0 : sal_Bool SAL_CALL ODatabaseMetaData::nullsAreSortedLow( ) throw(SQLException, RuntimeException)
1101 : {
1102 : SQLUSMALLINT nValue;
1103 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_NULL_COLLATION,nValue,*this);
1104 0 : return nValue == SQL_NC_LOW;
1105 : }
1106 : // -------------------------------------------------------------------------
1107 0 : sal_Bool SAL_CALL ODatabaseMetaData::supportsSchemasInProcedureCalls( ) throw(SQLException, RuntimeException)
1108 : {
1109 : SQLUINTEGER nValue;
1110 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_SCHEMA_USAGE,nValue,*this);
1111 0 : return (nValue & SQL_SU_PROCEDURE_INVOCATION) == SQL_SU_PROCEDURE_INVOCATION;
1112 : }
1113 : // -------------------------------------------------------------------------
1114 0 : sal_Bool SAL_CALL ODatabaseMetaData::supportsSchemasInPrivilegeDefinitions( ) throw(SQLException, RuntimeException)
1115 : {
1116 : SQLUINTEGER nValue;
1117 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_SCHEMA_USAGE,nValue,*this);
1118 0 : return (nValue & SQL_SU_PRIVILEGE_DEFINITION) == SQL_SU_PRIVILEGE_DEFINITION;
1119 : }
1120 : // -------------------------------------------------------------------------
1121 0 : sal_Bool SAL_CALL ODatabaseMetaData::supportsCatalogsInProcedureCalls( ) throw(SQLException, RuntimeException)
1122 : {
1123 0 : SQLUINTEGER nValue=0;
1124 0 : if(m_bUseCatalog)
1125 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_CATALOG_USAGE,nValue,*this);
1126 0 : return (nValue & SQL_CU_PROCEDURE_INVOCATION) == SQL_CU_PROCEDURE_INVOCATION;
1127 : }
1128 : // -------------------------------------------------------------------------
1129 0 : sal_Bool SAL_CALL ODatabaseMetaData::supportsCatalogsInPrivilegeDefinitions( ) throw(SQLException, RuntimeException)
1130 : {
1131 0 : SQLUINTEGER nValue=0;
1132 0 : if(m_bUseCatalog)
1133 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_CATALOG_USAGE,nValue,*this);
1134 0 : return (nValue & SQL_CU_PRIVILEGE_DEFINITION) == SQL_CU_PRIVILEGE_DEFINITION;
1135 : }
1136 : // -------------------------------------------------------------------------
1137 0 : sal_Bool SAL_CALL ODatabaseMetaData::supportsCorrelatedSubqueries( ) throw(SQLException, RuntimeException)
1138 : {
1139 : SQLUINTEGER nValue;
1140 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_SUBQUERIES,nValue,*this);
1141 0 : return (nValue & SQL_SQ_CORRELATED_SUBQUERIES) == SQL_SQ_CORRELATED_SUBQUERIES;
1142 : }
1143 : // -------------------------------------------------------------------------
1144 0 : sal_Bool SAL_CALL ODatabaseMetaData::supportsSubqueriesInComparisons( ) throw(SQLException, RuntimeException)
1145 : {
1146 : SQLUINTEGER nValue;
1147 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_SUBQUERIES,nValue,*this);
1148 0 : return (nValue & SQL_SQ_COMPARISON) == SQL_SQ_COMPARISON;
1149 : }
1150 : // -------------------------------------------------------------------------
1151 0 : sal_Bool SAL_CALL ODatabaseMetaData::supportsSubqueriesInExists( ) throw(SQLException, RuntimeException)
1152 : {
1153 : SQLUINTEGER nValue;
1154 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_SUBQUERIES,nValue,*this);
1155 0 : return (nValue & SQL_SQ_EXISTS) == SQL_SQ_EXISTS;
1156 : }
1157 : // -------------------------------------------------------------------------
1158 0 : sal_Bool SAL_CALL ODatabaseMetaData::supportsSubqueriesInIns( ) throw(SQLException, RuntimeException)
1159 : {
1160 : SQLUINTEGER nValue;
1161 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_SUBQUERIES,nValue,*this);
1162 0 : return (nValue & SQL_SQ_IN) == SQL_SQ_IN;
1163 : }
1164 : // -------------------------------------------------------------------------
1165 0 : sal_Bool SAL_CALL ODatabaseMetaData::supportsSubqueriesInQuantifieds( ) throw(SQLException, RuntimeException)
1166 : {
1167 : SQLUINTEGER nValue;
1168 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_SUBQUERIES,nValue,*this);
1169 0 : return (nValue & SQL_SQ_QUANTIFIED) == SQL_SQ_QUANTIFIED;
1170 : }
1171 : // -------------------------------------------------------------------------
1172 0 : sal_Bool SAL_CALL ODatabaseMetaData::supportsANSI92IntermediateSQL( ) throw(SQLException, RuntimeException)
1173 : {
1174 : SQLUINTEGER nValue;
1175 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_SQL_CONFORMANCE,nValue,*this);
1176 0 : return nValue == SQL_SC_SQL92_INTERMEDIATE;
1177 : }
1178 : // -----------------------------------------------------------------------------
1179 0 : ::rtl::OUString ODatabaseMetaData::getURLImpl()
1180 : {
1181 0 : ::rtl::OUString aValue;
1182 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_DATA_SOURCE_NAME,aValue,*this,m_pConnection->getTextEncoding());
1183 0 : return aValue;
1184 : }
1185 : // -------------------------------------------------------------------------
1186 0 : ::rtl::OUString SAL_CALL ODatabaseMetaData::getURL( ) throw(SQLException, RuntimeException)
1187 : {
1188 0 : ::rtl::OUString aValue = m_pConnection->getURL();
1189 0 : if ( aValue.isEmpty() )
1190 : {
1191 0 : aValue = ::rtl::OUString("sdbc:odbc:");
1192 0 : aValue += getURLImpl();
1193 : }
1194 0 : return aValue;
1195 : }
1196 : // -------------------------------------------------------------------------
1197 0 : ::rtl::OUString SAL_CALL ODatabaseMetaData::getUserName( ) throw(SQLException, RuntimeException)
1198 : {
1199 0 : ::rtl::OUString aValue;
1200 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_USER_NAME,aValue,*this,m_pConnection->getTextEncoding());
1201 0 : return aValue;
1202 : }
1203 : // -------------------------------------------------------------------------
1204 0 : ::rtl::OUString SAL_CALL ODatabaseMetaData::getDriverName( ) throw(SQLException, RuntimeException)
1205 : {
1206 0 : ::rtl::OUString aValue;
1207 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_DRIVER_NAME,aValue,*this,m_pConnection->getTextEncoding());
1208 0 : return aValue;
1209 : }
1210 : // -------------------------------------------------------------------------
1211 0 : ::rtl::OUString SAL_CALL ODatabaseMetaData::getDriverVersion() throw(SQLException, RuntimeException)
1212 : {
1213 0 : ::rtl::OUString aValue;
1214 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_DRIVER_ODBC_VER,aValue,*this,m_pConnection->getTextEncoding());
1215 0 : return aValue;
1216 : }
1217 : // -------------------------------------------------------------------------
1218 0 : ::rtl::OUString SAL_CALL ODatabaseMetaData::getDatabaseProductVersion( ) throw(SQLException, RuntimeException)
1219 : {
1220 0 : ::rtl::OUString aValue;
1221 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_DRIVER_VER,aValue,*this,m_pConnection->getTextEncoding());
1222 0 : return aValue;
1223 : }
1224 : // -------------------------------------------------------------------------
1225 0 : ::rtl::OUString SAL_CALL ODatabaseMetaData::getDatabaseProductName( ) throw(SQLException, RuntimeException)
1226 : {
1227 0 : ::rtl::OUString aValue;
1228 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_DBMS_NAME,aValue,*this,m_pConnection->getTextEncoding());
1229 0 : return aValue;
1230 : }
1231 : // -------------------------------------------------------------------------
1232 0 : ::rtl::OUString SAL_CALL ODatabaseMetaData::getProcedureTerm( ) throw(SQLException, RuntimeException)
1233 : {
1234 0 : ::rtl::OUString aValue;
1235 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_PROCEDURE_TERM,aValue,*this,m_pConnection->getTextEncoding());
1236 0 : return aValue;
1237 : }
1238 : // -------------------------------------------------------------------------
1239 0 : ::rtl::OUString SAL_CALL ODatabaseMetaData::getSchemaTerm( ) throw(SQLException, RuntimeException)
1240 : {
1241 0 : ::rtl::OUString aValue;
1242 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_SCHEMA_TERM,aValue,*this,m_pConnection->getTextEncoding());
1243 0 : return aValue;
1244 : }
1245 : // -------------------------------------------------------------------------
1246 0 : sal_Int32 SAL_CALL ODatabaseMetaData::getDriverMajorVersion( ) throw(RuntimeException)
1247 : {
1248 0 : ::rtl::OUString aValue;
1249 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_DRIVER_VER,aValue,*this,m_pConnection->getTextEncoding());
1250 0 : return aValue.copy(0,aValue.indexOf('.')).toInt32();
1251 : }
1252 : // -------------------------------------------------------------------------
1253 0 : sal_Int32 SAL_CALL ODatabaseMetaData::getDefaultTransactionIsolation( ) throw(SQLException, RuntimeException)
1254 : {
1255 : SQLUINTEGER nValue;
1256 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_SUBQUERIES,nValue,*this);
1257 0 : return nValue;
1258 : }
1259 : // -------------------------------------------------------------------------
1260 0 : sal_Int32 SAL_CALL ODatabaseMetaData::getDriverMinorVersion( ) throw(RuntimeException)
1261 : {
1262 0 : ::rtl::OUString aValue;
1263 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_DRIVER_VER,aValue,*this,m_pConnection->getTextEncoding());
1264 0 : return aValue.copy(0,aValue.lastIndexOf('.')).toInt32();
1265 : }
1266 : // -------------------------------------------------------------------------
1267 0 : ::rtl::OUString SAL_CALL ODatabaseMetaData::getSQLKeywords( ) throw(SQLException, RuntimeException)
1268 : {
1269 0 : ::rtl::OUString aValue;
1270 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_KEYWORDS,aValue,*this,m_pConnection->getTextEncoding());
1271 0 : return aValue;
1272 : }
1273 : // -------------------------------------------------------------------------
1274 0 : ::rtl::OUString SAL_CALL ODatabaseMetaData::getSearchStringEscape( ) throw(SQLException, RuntimeException)
1275 : {
1276 0 : ::rtl::OUString aValue;
1277 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_SEARCH_PATTERN_ESCAPE,aValue,*this,m_pConnection->getTextEncoding());
1278 0 : return aValue;
1279 : }
1280 : // -------------------------------------------------------------------------
1281 0 : ::rtl::OUString SAL_CALL ODatabaseMetaData::getStringFunctions( ) throw(SQLException, RuntimeException)
1282 : {
1283 : SQLUINTEGER nValue;
1284 0 : ::rtl::OUStringBuffer aValue;
1285 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_STRING_FUNCTIONS,nValue,*this);
1286 0 : if(nValue & SQL_FN_STR_ASCII)
1287 0 : aValue.appendAscii("ASCII,");
1288 0 : if(nValue & SQL_FN_STR_BIT_LENGTH)
1289 0 : aValue.appendAscii("BIT_LENGTH,");
1290 0 : if(nValue & SQL_FN_STR_CHAR)
1291 0 : aValue.appendAscii("CHAR,");
1292 0 : if(nValue & SQL_FN_STR_CHAR_LENGTH)
1293 0 : aValue.appendAscii("CHAR_LENGTH,");
1294 0 : if(nValue & SQL_FN_STR_CHARACTER_LENGTH)
1295 0 : aValue.appendAscii("CHARACTER_LENGTH,");
1296 0 : if(nValue & SQL_FN_STR_CONCAT)
1297 0 : aValue.appendAscii("CONCAT,");
1298 0 : if(nValue & SQL_FN_STR_DIFFERENCE)
1299 0 : aValue.appendAscii("DIFFERENCE,");
1300 0 : if(nValue & SQL_FN_STR_INSERT)
1301 0 : aValue.appendAscii("INSERT,");
1302 0 : if(nValue & SQL_FN_STR_LCASE)
1303 0 : aValue.appendAscii("LCASE,");
1304 0 : if(nValue & SQL_FN_STR_LEFT)
1305 0 : aValue.appendAscii("LEFT,");
1306 0 : if(nValue & SQL_FN_STR_LENGTH)
1307 0 : aValue.appendAscii("LENGTH,");
1308 0 : if(nValue & SQL_FN_STR_LOCATE)
1309 0 : aValue.appendAscii("LOCATE,");
1310 0 : if(nValue & SQL_FN_STR_LOCATE_2)
1311 0 : aValue.appendAscii("LOCATE_2,");
1312 0 : if(nValue & SQL_FN_STR_LTRIM)
1313 0 : aValue.appendAscii("LTRIM,");
1314 0 : if(nValue & SQL_FN_STR_OCTET_LENGTH)
1315 0 : aValue.appendAscii("OCTET_LENGTH,");
1316 0 : if(nValue & SQL_FN_STR_POSITION)
1317 0 : aValue.appendAscii("POSITION,");
1318 0 : if(nValue & SQL_FN_STR_REPEAT)
1319 0 : aValue.appendAscii("REPEAT,");
1320 0 : if(nValue & SQL_FN_STR_REPLACE)
1321 0 : aValue.appendAscii("REPLACE,");
1322 0 : if(nValue & SQL_FN_STR_RIGHT)
1323 0 : aValue.appendAscii("RIGHT,");
1324 0 : if(nValue & SQL_FN_STR_RTRIM)
1325 0 : aValue.appendAscii("RTRIM,");
1326 0 : if(nValue & SQL_FN_STR_SOUNDEX)
1327 0 : aValue.appendAscii("SOUNDEX,");
1328 0 : if(nValue & SQL_FN_STR_SPACE)
1329 0 : aValue.appendAscii("SPACE,");
1330 0 : if(nValue & SQL_FN_STR_SUBSTRING)
1331 0 : aValue.appendAscii("SUBSTRING,");
1332 0 : if(nValue & SQL_FN_STR_UCASE)
1333 0 : aValue.appendAscii("UCASE,");
1334 :
1335 :
1336 0 : if ( aValue.getLength() )
1337 0 : aValue.setLength(aValue.getLength()-1);
1338 :
1339 0 : return aValue.makeStringAndClear();
1340 : }
1341 : // -------------------------------------------------------------------------
1342 0 : ::rtl::OUString SAL_CALL ODatabaseMetaData::getTimeDateFunctions( ) throw(SQLException, RuntimeException)
1343 : {
1344 : SQLUINTEGER nValue;
1345 0 : ::rtl::OUStringBuffer aValue;
1346 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_TIMEDATE_FUNCTIONS,nValue,*this);
1347 :
1348 0 : if(nValue & SQL_FN_TD_CURRENT_DATE)
1349 0 : aValue.appendAscii("CURRENT_DATE,");
1350 0 : if(nValue & SQL_FN_TD_CURRENT_TIME)
1351 0 : aValue.appendAscii("CURRENT_TIME,");
1352 0 : if(nValue & SQL_FN_TD_CURRENT_TIMESTAMP)
1353 0 : aValue.appendAscii("CURRENT_TIMESTAMP,");
1354 0 : if(nValue & SQL_FN_TD_CURDATE)
1355 0 : aValue.appendAscii("CURDATE,");
1356 0 : if(nValue & SQL_FN_TD_CURTIME)
1357 0 : aValue.appendAscii("CURTIME,");
1358 0 : if(nValue & SQL_FN_TD_DAYNAME)
1359 0 : aValue.appendAscii("DAYNAME,");
1360 0 : if(nValue & SQL_FN_TD_DAYOFMONTH)
1361 0 : aValue.appendAscii("DAYOFMONTH,");
1362 0 : if(nValue & SQL_FN_TD_DAYOFWEEK)
1363 0 : aValue.appendAscii("DAYOFWEEK,");
1364 0 : if(nValue & SQL_FN_TD_DAYOFYEAR)
1365 0 : aValue.appendAscii("DAYOFYEAR,");
1366 0 : if(nValue & SQL_FN_TD_EXTRACT)
1367 0 : aValue.appendAscii("EXTRACT,");
1368 0 : if(nValue & SQL_FN_TD_HOUR)
1369 0 : aValue.appendAscii("HOUR,");
1370 0 : if(nValue & SQL_FN_TD_MINUTE)
1371 0 : aValue.appendAscii("MINUTE,");
1372 0 : if(nValue & SQL_FN_TD_MONTH)
1373 0 : aValue.appendAscii("MONTH,");
1374 0 : if(nValue & SQL_FN_TD_MONTHNAME)
1375 0 : aValue.appendAscii("MONTHNAME,");
1376 0 : if(nValue & SQL_FN_TD_NOW)
1377 0 : aValue.appendAscii("NOW,");
1378 0 : if(nValue & SQL_FN_TD_QUARTER)
1379 0 : aValue.appendAscii("QUARTER,");
1380 0 : if(nValue & SQL_FN_TD_SECOND)
1381 0 : aValue.appendAscii("SECOND,");
1382 0 : if(nValue & SQL_FN_TD_TIMESTAMPADD)
1383 0 : aValue.appendAscii("TIMESTAMPADD,");
1384 0 : if(nValue & SQL_FN_TD_TIMESTAMPDIFF)
1385 0 : aValue.appendAscii("TIMESTAMPDIFF,");
1386 0 : if(nValue & SQL_FN_TD_WEEK)
1387 0 : aValue.appendAscii("WEEK,");
1388 0 : if(nValue & SQL_FN_TD_YEAR)
1389 0 : aValue.appendAscii("YEAR,");
1390 :
1391 0 : if ( aValue.getLength() )
1392 0 : aValue.setLength(aValue.getLength()-1);
1393 :
1394 0 : return aValue.makeStringAndClear();
1395 : }
1396 : // -------------------------------------------------------------------------
1397 0 : ::rtl::OUString SAL_CALL ODatabaseMetaData::getSystemFunctions( ) throw(SQLException, RuntimeException)
1398 : {
1399 : SQLUINTEGER nValue;
1400 0 : ::rtl::OUStringBuffer aValue;
1401 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_SYSTEM_FUNCTIONS,nValue,*this);
1402 :
1403 0 : if(nValue & SQL_FN_SYS_DBNAME)
1404 0 : aValue.appendAscii("DBNAME,");
1405 0 : if(nValue & SQL_FN_SYS_IFNULL)
1406 0 : aValue.appendAscii("IFNULL,");
1407 0 : if(nValue & SQL_FN_SYS_USERNAME)
1408 0 : aValue.appendAscii("USERNAME,");
1409 :
1410 0 : if ( aValue.getLength() )
1411 0 : aValue.setLength(aValue.getLength()-1);
1412 :
1413 0 : return aValue.makeStringAndClear();
1414 : }
1415 : // -------------------------------------------------------------------------
1416 0 : ::rtl::OUString SAL_CALL ODatabaseMetaData::getNumericFunctions( ) throw(SQLException, RuntimeException)
1417 : {
1418 : SQLUINTEGER nValue;
1419 0 : ::rtl::OUStringBuffer aValue;
1420 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_NUMERIC_FUNCTIONS,nValue,*this);
1421 :
1422 0 : if(nValue & SQL_FN_NUM_ABS)
1423 0 : aValue.appendAscii("ABS,");
1424 0 : if(nValue & SQL_FN_NUM_ACOS)
1425 0 : aValue.appendAscii("ACOS,");
1426 0 : if(nValue & SQL_FN_NUM_ASIN)
1427 0 : aValue.appendAscii("ASIN,");
1428 0 : if(nValue & SQL_FN_NUM_ATAN)
1429 0 : aValue.appendAscii("ATAN,");
1430 0 : if(nValue & SQL_FN_NUM_ATAN2)
1431 0 : aValue.appendAscii("ATAN2,");
1432 0 : if(nValue & SQL_FN_NUM_CEILING)
1433 0 : aValue.appendAscii("CEILING,");
1434 0 : if(nValue & SQL_FN_NUM_COS)
1435 0 : aValue.appendAscii("COS,");
1436 0 : if(nValue & SQL_FN_NUM_COT)
1437 0 : aValue.appendAscii("COT,");
1438 0 : if(nValue & SQL_FN_NUM_DEGREES)
1439 0 : aValue.appendAscii("DEGREES,");
1440 0 : if(nValue & SQL_FN_NUM_EXP)
1441 0 : aValue.appendAscii("EXP,");
1442 0 : if(nValue & SQL_FN_NUM_FLOOR)
1443 0 : aValue.appendAscii("FLOOR,");
1444 0 : if(nValue & SQL_FN_NUM_LOG)
1445 0 : aValue.appendAscii("LOGF,");
1446 0 : if(nValue & SQL_FN_NUM_LOG10)
1447 0 : aValue.appendAscii("LOG10,");
1448 0 : if(nValue & SQL_FN_NUM_MOD)
1449 0 : aValue.appendAscii("MOD,");
1450 0 : if(nValue & SQL_FN_NUM_PI)
1451 0 : aValue.appendAscii("PI,");
1452 0 : if(nValue & SQL_FN_NUM_POWER)
1453 0 : aValue.appendAscii("POWER,");
1454 0 : if(nValue & SQL_FN_NUM_RADIANS)
1455 0 : aValue.appendAscii("RADIANS,");
1456 0 : if(nValue & SQL_FN_NUM_RAND)
1457 0 : aValue.appendAscii("RAND,");
1458 0 : if(nValue & SQL_FN_NUM_ROUND)
1459 0 : aValue.appendAscii("ROUND,");
1460 0 : if(nValue & SQL_FN_NUM_SIGN)
1461 0 : aValue.appendAscii("SIGN,");
1462 0 : if(nValue & SQL_FN_NUM_SIN)
1463 0 : aValue.appendAscii("SIN,");
1464 0 : if(nValue & SQL_FN_NUM_SQRT)
1465 0 : aValue.appendAscii("SQRT,");
1466 0 : if(nValue & SQL_FN_NUM_TAN)
1467 0 : aValue.appendAscii("TAN,");
1468 0 : if(nValue & SQL_FN_NUM_TRUNCATE)
1469 0 : aValue.appendAscii("TRUNCATE,");
1470 :
1471 0 : if ( aValue.getLength() )
1472 0 : aValue.setLength(aValue.getLength()-1);
1473 :
1474 0 : return aValue.makeStringAndClear();
1475 : }
1476 : // -------------------------------------------------------------------------
1477 0 : sal_Bool SAL_CALL ODatabaseMetaData::supportsExtendedSQLGrammar( ) throw(SQLException, RuntimeException)
1478 : {
1479 : SQLUINTEGER nValue;
1480 0 : if(m_bOdbc3)
1481 : {
1482 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_ODBC_INTERFACE_CONFORMANCE,nValue,*this);
1483 0 : return nValue == SQL_OIC_LEVEL2;
1484 : }
1485 : else
1486 : {
1487 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_ODBC_INTERFACE_CONFORMANCE,nValue,*this);
1488 0 : return nValue == SQL_OAC_LEVEL2;
1489 : }
1490 : }
1491 : // -------------------------------------------------------------------------
1492 0 : sal_Bool SAL_CALL ODatabaseMetaData::supportsCoreSQLGrammar( ) throw(SQLException, RuntimeException)
1493 : {
1494 : SQLUINTEGER nValue;
1495 0 : if(m_bOdbc3)
1496 : {
1497 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_ODBC_INTERFACE_CONFORMANCE,nValue,*this);
1498 0 : return nValue == SQL_OIC_CORE || nValue == SQL_OIC_LEVEL2 || nValue == SQL_OIC_LEVEL1;
1499 : }
1500 : else
1501 : {
1502 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_ODBC_SQL_CONFORMANCE,nValue,*this);
1503 0 : return nValue == SQL_OSC_CORE || nValue == SQL_OAC_LEVEL1 || nValue == SQL_OAC_LEVEL2;
1504 : }
1505 : }
1506 : // -------------------------------------------------------------------------
1507 0 : sal_Bool SAL_CALL ODatabaseMetaData::supportsMinimumSQLGrammar( ) throw(SQLException, RuntimeException)
1508 : {
1509 : SQLUINTEGER nValue;
1510 0 : if(m_bOdbc3)
1511 : {
1512 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_ODBC_INTERFACE_CONFORMANCE,nValue,*this);
1513 0 : return nValue == SQL_OIC_LEVEL1 || nValue == SQL_OIC_LEVEL2;
1514 : }
1515 : else
1516 : {
1517 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_ODBC_INTERFACE_CONFORMANCE,nValue,*this);
1518 0 : return nValue == SQL_OAC_LEVEL1 || nValue == SQL_OAC_LEVEL2;
1519 : }
1520 : }
1521 : // -------------------------------------------------------------------------
1522 0 : sal_Bool SAL_CALL ODatabaseMetaData::supportsFullOuterJoins( ) throw(SQLException, RuntimeException)
1523 : {
1524 : SQLUINTEGER nValue;
1525 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_OJ_CAPABILITIES,nValue,*this);
1526 0 : return (nValue & SQL_OJ_FULL) == SQL_OJ_FULL;
1527 : }
1528 : // -------------------------------------------------------------------------
1529 0 : sal_Bool SAL_CALL ODatabaseMetaData::supportsLimitedOuterJoins( ) throw(SQLException, RuntimeException)
1530 : {
1531 0 : return supportsFullOuterJoins( );
1532 : }
1533 : // -------------------------------------------------------------------------
1534 0 : sal_Int32 SAL_CALL ODatabaseMetaData::getMaxColumnsInGroupBy( ) throw(SQLException, RuntimeException)
1535 : {
1536 : SQLUSMALLINT nValue;
1537 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_MAX_COLUMNS_IN_GROUP_BY,nValue,*this);
1538 0 : return nValue;
1539 : }
1540 : // -------------------------------------------------------------------------
1541 0 : sal_Int32 SAL_CALL ODatabaseMetaData::getMaxColumnsInOrderBy( ) throw(SQLException, RuntimeException)
1542 : {
1543 : SQLUSMALLINT nValue;
1544 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_MAX_COLUMNS_IN_ORDER_BY,nValue,*this);
1545 0 : return nValue;
1546 : }
1547 : // -------------------------------------------------------------------------
1548 0 : sal_Int32 SAL_CALL ODatabaseMetaData::getMaxColumnsInSelect( ) throw(SQLException, RuntimeException)
1549 : {
1550 : SQLUSMALLINT nValue;
1551 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_MAX_COLUMNS_IN_SELECT,nValue,*this);
1552 0 : return nValue;
1553 : }
1554 : // -------------------------------------------------------------------------
1555 0 : sal_Int32 SAL_CALL ODatabaseMetaData::getMaxUserNameLength( ) throw(SQLException, RuntimeException)
1556 : {
1557 : SQLUSMALLINT nValue;
1558 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_MAX_USER_NAME_LEN,nValue,*this);
1559 0 : return nValue;
1560 : }
1561 : // -------------------------------------------------------------------------
1562 0 : sal_Bool SAL_CALL ODatabaseMetaData::supportsResultSetType( sal_Int32 setType ) throw(SQLException, RuntimeException)
1563 : {
1564 : SQLUINTEGER nValue;
1565 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,SQL_CURSOR_SENSITIVITY,nValue,*this);
1566 0 : return (nValue & static_cast<SQLUINTEGER>(setType)) == static_cast<SQLUINTEGER>(setType);
1567 : }
1568 : // -------------------------------------------------------------------------
1569 0 : sal_Bool SAL_CALL ODatabaseMetaData::supportsResultSetConcurrency( sal_Int32 setType, sal_Int32 concurrency ) throw(SQLException, RuntimeException)
1570 : {
1571 : SQLUINTEGER nValue;
1572 0 : SQLUSMALLINT nAskFor( SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES2 );
1573 0 : switch(setType)
1574 : {
1575 : default:
1576 : case ResultSetType::FORWARD_ONLY:
1577 0 : nAskFor = SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES2;
1578 0 : break;
1579 : case ResultSetType::SCROLL_INSENSITIVE:
1580 0 : nAskFor = SQL_STATIC_CURSOR_ATTRIBUTES2;
1581 0 : break;
1582 : case ResultSetType::SCROLL_SENSITIVE:
1583 0 : nAskFor = SQL_DYNAMIC_CURSOR_ATTRIBUTES2;
1584 0 : break;
1585 : }
1586 :
1587 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,nAskFor,nValue,*this);
1588 0 : sal_Bool bRet = sal_False;
1589 0 : switch(concurrency)
1590 : {
1591 : case ResultSetConcurrency::READ_ONLY:
1592 0 : bRet = (nValue & SQL_CA2_READ_ONLY_CONCURRENCY) == SQL_CA2_READ_ONLY_CONCURRENCY;
1593 0 : break;
1594 : case ResultSetConcurrency::UPDATABLE:
1595 0 : bRet = (nValue & SQL_CA2_OPT_VALUES_CONCURRENCY) == SQL_CA2_OPT_VALUES_CONCURRENCY;
1596 0 : break;
1597 : }
1598 0 : return bRet;
1599 : }
1600 : // -------------------------------------------------------------------------
1601 0 : sal_Bool SAL_CALL ODatabaseMetaData::ownUpdatesAreVisible( sal_Int32 setType ) throw(SQLException, RuntimeException)
1602 : {
1603 : SQLUINTEGER nValue;
1604 0 : SQLUSMALLINT nAskFor( SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES2 );
1605 0 : switch(setType)
1606 : {
1607 : default:
1608 : case ResultSetType::FORWARD_ONLY:
1609 0 : nAskFor = SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES2;
1610 0 : break;
1611 : case ResultSetType::SCROLL_INSENSITIVE:
1612 0 : nAskFor = SQL_STATIC_CURSOR_ATTRIBUTES2;
1613 0 : break;
1614 : case ResultSetType::SCROLL_SENSITIVE:
1615 0 : nAskFor = SQL_DYNAMIC_CURSOR_ATTRIBUTES2;
1616 0 : break;
1617 : }
1618 :
1619 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,nAskFor,nValue,*this);
1620 0 : return (nValue & SQL_CA2_SENSITIVITY_UPDATES) == SQL_CA2_SENSITIVITY_UPDATES;
1621 : }
1622 : // -------------------------------------------------------------------------
1623 0 : sal_Bool SAL_CALL ODatabaseMetaData::ownDeletesAreVisible( sal_Int32 setType ) throw(SQLException, RuntimeException)
1624 : {
1625 : SQLUINTEGER nValue;
1626 0 : SQLUSMALLINT nAskFor( SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES2 );
1627 0 : switch(setType)
1628 : {
1629 : default:
1630 : case ResultSetType::FORWARD_ONLY:
1631 0 : nAskFor = SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES2;
1632 0 : break;
1633 : case ResultSetType::SCROLL_INSENSITIVE:
1634 0 : nAskFor = SQL_STATIC_CURSOR_ATTRIBUTES2;
1635 0 : break;
1636 : case ResultSetType::SCROLL_SENSITIVE:
1637 0 : nAskFor = SQL_DYNAMIC_CURSOR_ATTRIBUTES2;
1638 0 : break;
1639 : }
1640 :
1641 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,nAskFor,nValue,*this);
1642 0 : return (nValue & SQL_CA2_SENSITIVITY_DELETIONS) != SQL_CA2_SENSITIVITY_DELETIONS;
1643 : }
1644 : // -------------------------------------------------------------------------
1645 0 : sal_Bool SAL_CALL ODatabaseMetaData::ownInsertsAreVisible( sal_Int32 setType ) throw(SQLException, RuntimeException)
1646 : {
1647 : SQLUINTEGER nValue;
1648 0 : SQLUSMALLINT nAskFor( SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES2 );
1649 0 : switch(setType)
1650 : {
1651 : default:
1652 : case ResultSetType::FORWARD_ONLY:
1653 0 : nAskFor = SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES2;
1654 0 : break;
1655 : case ResultSetType::SCROLL_INSENSITIVE:
1656 0 : nAskFor = SQL_STATIC_CURSOR_ATTRIBUTES2;
1657 0 : break;
1658 : case ResultSetType::SCROLL_SENSITIVE:
1659 0 : nAskFor = SQL_DYNAMIC_CURSOR_ATTRIBUTES2;
1660 0 : break;
1661 : }
1662 :
1663 0 : OTools::GetInfo(m_pConnection,m_aConnectionHandle,nAskFor,nValue,*this);
1664 0 : return (nValue & SQL_CA2_SENSITIVITY_ADDITIONS) == SQL_CA2_SENSITIVITY_ADDITIONS;
1665 : }
1666 : // -------------------------------------------------------------------------
1667 0 : sal_Bool SAL_CALL ODatabaseMetaData::othersUpdatesAreVisible( sal_Int32 setType ) throw(SQLException, RuntimeException)
1668 : {
1669 0 : return ownUpdatesAreVisible(setType);
1670 : }
1671 : // -------------------------------------------------------------------------
1672 0 : sal_Bool SAL_CALL ODatabaseMetaData::othersDeletesAreVisible( sal_Int32 setType ) throw(SQLException, RuntimeException)
1673 : {
1674 0 : return ownDeletesAreVisible(setType);
1675 : }
1676 : // -------------------------------------------------------------------------
1677 0 : sal_Bool SAL_CALL ODatabaseMetaData::othersInsertsAreVisible( sal_Int32 setType ) throw(SQLException, RuntimeException)
1678 : {
1679 0 : return ownInsertsAreVisible(setType);
1680 : }
1681 : // -------------------------------------------------------------------------
1682 0 : sal_Bool SAL_CALL ODatabaseMetaData::updatesAreDetected( sal_Int32 /*setType*/ ) throw(SQLException, RuntimeException)
1683 : {
1684 0 : return sal_False;
1685 : }
1686 : // -------------------------------------------------------------------------
1687 0 : sal_Bool SAL_CALL ODatabaseMetaData::deletesAreDetected( sal_Int32 /*setType*/ ) throw(SQLException, RuntimeException)
1688 : {
1689 0 : return sal_False;
1690 : }
1691 : // -------------------------------------------------------------------------
1692 0 : sal_Bool SAL_CALL ODatabaseMetaData::insertsAreDetected( sal_Int32 /*setType*/ ) throw(SQLException, RuntimeException)
1693 : {
1694 0 : return sal_False;
1695 : }
1696 : // -------------------------------------------------------------------------
1697 0 : sal_Bool SAL_CALL ODatabaseMetaData::supportsBatchUpdates( ) throw(SQLException, RuntimeException)
1698 : {
1699 0 : return sal_False;
1700 : }
1701 : // -------------------------------------------------------------------------
1702 0 : Reference< XResultSet > SAL_CALL ODatabaseMetaData::getUDTs( const Any& /*catalog*/, const ::rtl::OUString& /*schemaPattern*/, const ::rtl::OUString& /*typeNamePattern*/, const Sequence< sal_Int32 >& /*types*/ ) throw(SQLException, RuntimeException)
1703 : {
1704 0 : return NULL;
1705 : }
1706 : // -----------------------------------------------------------------------------
1707 :
1708 : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|