1 /**************************************************************
2 *
3 * Licensed to the Apache Software Foundation (ASF) under one
4 * or more contributor license agreements. See the NOTICE file
5 * distributed with this work for additional information
6 * regarding copyright ownership. The ASF licenses this file
7 * to you under the Apache License, Version 2.0 (the
8 * "License"); you may not use this file except in compliance
9 * with the License. You may obtain a copy of the License at
10 *
11 * http://www.apache.org/licenses/LICENSE-2.0
12 *
13 * Unless required by applicable law or agreed to in writing,
14 * software distributed under the License is distributed on an
15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16 * KIND, either express or implied. See the License for the
17 * specific language governing permissions and limitations
18 * under the License.
19 *
20 *************************************************************/
21 #include "mysqlc_databasemetadata.hxx"
22 #include <com/sun/star/sdbc/DataType.hpp>
23 #include <com/sun/star/sdbc/ResultSetType.hpp>
24 #include <com/sun/star/sdbc/ResultSetConcurrency.hpp>
25 #include <com/sun/star/sdbc/TransactionIsolation.hpp>
26 #include <com/sun/star/sdbc/KeyRule.hpp>
27 #include <com/sun/star/sdbc/Deferrability.hpp>
28 #include <com/sun/star/sdbc/IndexType.hpp>
29 #include <com/sun/star/sdbc/BestRowScope.hpp>
30 #include <com/sun/star/sdbc/ColumnType.hpp>
31 #include <com/sun/star/lang/XInitialization.hpp>
32
33
34 #include "mysqlc_general.hxx"
35 #include "mysqlc_statement.hxx"
36 #include "mysqlc_driver.hxx"
37 #include "mysqlc_preparedstatement.hxx"
38
39 #include <stdio.h>
40
41 using namespace connectivity::mysqlc;
42 using namespace com::sun::star::uno;
43 using namespace com::sun::star::lang;
44 using namespace com::sun::star::beans;
45 using namespace com::sun::star::sdbc;
46 using ::rtl::OUString;
47 using mysqlc_sdbc_driver::getStringFromAny;
48
49 #include <preextstl.h>
50 #include <cppconn/connection.h>
51 #include <cppconn/resultset.h>
52 #include <cppconn/metadata.h>
53 #include <cppconn/statement.h>
54 #include <cppconn/prepared_statement.h>
55 #include <postextstl.h>
56
57 static ext_std::string wild("%");
58
59 using ::rtl::OUStringToOString;
60
61 // -----------------------------------------------------------------------------
lcl_setRows_throw(const Reference<XResultSet> & _xResultSet,sal_Int32 _nType,const std::vector<std::vector<Any>> & _rRows)62 void lcl_setRows_throw(const Reference< XResultSet >& _xResultSet,sal_Int32 _nType,const std::vector< std::vector< Any > >& _rRows)
63 {
64 Reference< XInitialization> xIni(_xResultSet,UNO_QUERY);
65 Sequence< Any > aArgs(2);
66 aArgs[0] <<= _nType;
67
68 Sequence< Sequence< Any > > aRows(_rRows.size());
69
70 std::vector< std::vector< Any > >::const_iterator aIter = _rRows.begin();
71 Sequence< Any > * pRowsIter = aRows.getArray();
72 Sequence< Any > * pRowsEnd = pRowsIter + aRows.getLength();
73 for (; pRowsIter != pRowsEnd;++pRowsIter,++aIter) {
74 if (!aIter->empty()) {
75 Sequence<Any> aSeq(&(*aIter->begin()),aIter->size());
76 (*pRowsIter) = aSeq;
77 }
78 }
79 aArgs[1] <<= aRows;
80 xIni->initialize(aArgs);
81 }
82
83
84 /* {{{ ODatabaseMetaData::ODatabaseMetaData() -I- */
ODatabaseMetaData(OConnection & _rCon)85 ODatabaseMetaData::ODatabaseMetaData(OConnection& _rCon)
86 :m_rConnection(_rCon)
87 ,m_bUseCatalog(sal_True)
88 ,meta(_rCon.getConnectionSettings().cppConnection->getMetaData())
89 ,identifier_quote_string_set(false)
90 {
91 OSL_TRACE("ODatabaseMetaData::ODatabaseMetaData");
92 if (!m_rConnection.isCatalogUsed())
93 {
94 osl_incrementInterlockedCount(&m_refCount);
95 m_bUseCatalog = !(usesLocalFiles() || usesLocalFilePerTable());
96 osl_decrementInterlockedCount(&m_refCount);
97 }
98 }
99 /* }}} */
100
101
102 /* {{{ ODatabaseMetaData::~ODatabaseMetaData() -I- */
~ODatabaseMetaData()103 ODatabaseMetaData::~ODatabaseMetaData()
104 {
105 OSL_TRACE("ODatabaseMetaData::~ODatabaseMetaData");
106 }
107 /* }}} */
108
109
110 /* {{{ ODatabaseMetaData::impl_getStringMetaData() -I- */
impl_getStringMetaData(const sal_Char * _methodName,const ext_std::string & (sql::DatabaseMetaData::* _Method)())111 OUString ODatabaseMetaData::impl_getStringMetaData(const sal_Char* _methodName, const ext_std::string& (sql::DatabaseMetaData::*_Method)() )
112 {
113 OSL_TRACE( "mysqlc::ODatabaseMetaData::%s", _methodName);
114 OUString stringMetaData;
115 try {
116 stringMetaData = mysqlc_sdbc_driver::convert((meta->*_Method)(), m_rConnection.getConnectionEncoding());
117 } catch (sql::MethodNotImplementedException) {
118 mysqlc_sdbc_driver::throwFeatureNotImplementedException(_methodName, *this);
119 } catch (sql::InvalidArgumentException) {
120 mysqlc_sdbc_driver::throwInvalidArgumentException(_methodName, *this);
121 } catch (const sql::SQLException& e) {
122 mysqlc_sdbc_driver::translateAndThrow(e, *this, m_rConnection.getConnectionEncoding());
123 }
124 return stringMetaData;
125 }
126 /* }}} */
127
128
129 /* {{{ ODatabaseMetaData::impl_getStringMetaData() -I- */
impl_getStringMetaData(const sal_Char * _methodName,ext_std::string (sql::DatabaseMetaData::* _Method)())130 OUString ODatabaseMetaData::impl_getStringMetaData(const sal_Char* _methodName, ext_std::string (sql::DatabaseMetaData::*_Method)() )
131 {
132 OSL_TRACE( "mysqlc::ODatabaseMetaData::%s", _methodName);
133 OUString stringMetaData;
134 try {
135 stringMetaData = mysqlc_sdbc_driver::convert((meta->*_Method)(), m_rConnection.getConnectionEncoding());
136 } catch (sql::MethodNotImplementedException) {
137 mysqlc_sdbc_driver::throwFeatureNotImplementedException(_methodName, *this);
138 } catch (sql::InvalidArgumentException) {
139 mysqlc_sdbc_driver::throwInvalidArgumentException(_methodName, *this);
140 } catch (const sql::SQLException& e) {
141 mysqlc_sdbc_driver::translateAndThrow(e, *this, m_rConnection.getConnectionEncoding());
142 }
143 return stringMetaData;
144 }
145 /* }}} */
146
147
148 /* {{{ ODatabaseMetaData::impl_getStringMetaData() -I- */
impl_getStringMetaData(const sal_Char * _methodName,const sql::SQLString & (sql::DatabaseMetaData::* _Method)())149 OUString ODatabaseMetaData::impl_getStringMetaData(const sal_Char* _methodName, const sql::SQLString& (sql::DatabaseMetaData::*_Method)() )
150 {
151 OSL_TRACE( "mysqlc::ODatabaseMetaData::%s", _methodName);
152 OUString stringMetaData;
153 try {
154 stringMetaData = mysqlc_sdbc_driver::convert((meta->*_Method)(), m_rConnection.getConnectionEncoding());
155 } catch (sql::MethodNotImplementedException) {
156 mysqlc_sdbc_driver::throwFeatureNotImplementedException(_methodName, *this);
157 } catch (sql::InvalidArgumentException) {
158 mysqlc_sdbc_driver::throwInvalidArgumentException(_methodName, *this);
159 } catch (const sql::SQLException& e) {
160 mysqlc_sdbc_driver::translateAndThrow(e, *this, m_rConnection.getConnectionEncoding());
161 }
162 return stringMetaData;
163 }
164 /* }}} */
165
166
167 /* {{{ ODatabaseMetaData::impl_getStringMetaData() -I- */
impl_getStringMetaData(const sal_Char * _methodName,sql::SQLString (sql::DatabaseMetaData::* _Method)())168 OUString ODatabaseMetaData::impl_getStringMetaData(const sal_Char* _methodName, sql::SQLString (sql::DatabaseMetaData::*_Method)() )
169 {
170 OSL_TRACE( "mysqlc::ODatabaseMetaData::%s", _methodName);
171 OUString stringMetaData;
172 try {
173 stringMetaData = mysqlc_sdbc_driver::convert((meta->*_Method)(), m_rConnection.getConnectionEncoding());
174 } catch (sql::MethodNotImplementedException) {
175 mysqlc_sdbc_driver::throwFeatureNotImplementedException(_methodName, *this);
176 } catch (sql::InvalidArgumentException) {
177 mysqlc_sdbc_driver::throwInvalidArgumentException(_methodName, *this);
178 } catch (const sql::SQLException& e) {
179 mysqlc_sdbc_driver::translateAndThrow(e, *this, m_rConnection.getConnectionEncoding());
180 }
181 return stringMetaData;
182 }
183 /* }}} */
184
185
186 /* {{{ ODatabaseMetaData::impl_getInt32MetaData() -I- */
impl_getInt32MetaData(const sal_Char * _methodName,unsigned int (sql::DatabaseMetaData::* _Method)())187 sal_Int32 ODatabaseMetaData::impl_getInt32MetaData(const sal_Char* _methodName, unsigned int (sql::DatabaseMetaData::*_Method)() )
188 {
189 OSL_TRACE( "mysqlc::ODatabaseMetaData::%s", _methodName);
190 sal_Int32 int32MetaData(0);
191 try {
192 int32MetaData = (meta->*_Method)();
193 } catch (sql::MethodNotImplementedException) {
194 mysqlc_sdbc_driver::throwFeatureNotImplementedException(_methodName, *this);
195 } catch (sql::InvalidArgumentException) {
196 mysqlc_sdbc_driver::throwInvalidArgumentException(_methodName, *this);
197 } catch (const sql::SQLException& e) {
198 mysqlc_sdbc_driver::translateAndThrow(e, *this, m_rConnection.getConnectionEncoding());
199 }
200 return int32MetaData;
201 }
202 /* }}} */
203
204
205 /* {{{ ODatabaseMetaData::impl_getBoolMetaData() -I- */
impl_getBoolMetaData(const sal_Char * _methodName,bool (sql::DatabaseMetaData::* _Method)())206 sal_Bool ODatabaseMetaData::impl_getBoolMetaData(const sal_Char* _methodName, bool (sql::DatabaseMetaData::*_Method)() )
207 {
208 OSL_TRACE( "mysqlc::ODatabaseMetaData::%s", _methodName);
209 sal_Bool boolMetaData(0);
210 try {
211 boolMetaData = (meta->*_Method)() ? sal_True : sal_False;
212 } catch (sql::MethodNotImplementedException) {
213 mysqlc_sdbc_driver::throwFeatureNotImplementedException(_methodName, *this);
214 } catch (sql::InvalidArgumentException) {
215 mysqlc_sdbc_driver::throwInvalidArgumentException(_methodName, *this);
216 } catch (const sql::SQLException& e) {
217 mysqlc_sdbc_driver::translateAndThrow(e, *this, m_rConnection.getConnectionEncoding());
218 }
219 return boolMetaData;
220 }
221 /* }}} */
222
223
224 /* {{{ ODatabaseMetaData::impl_getBoolMetaData() -I- */
impl_getBoolMetaData(const sal_Char * _methodName,bool (sql::DatabaseMetaData::* _Method)(int),sal_Int32 _arg)225 sal_Bool ODatabaseMetaData::impl_getBoolMetaData(const sal_Char* _methodName, bool (sql::DatabaseMetaData::*_Method)(int), sal_Int32 _arg )
226 {
227 OSL_TRACE( "mysqlc::ODatabaseMetaData::%s", _methodName);
228 sal_Bool boolMetaData(0);
229 try {
230 boolMetaData = (meta->*_Method)( _arg ) ? sal_True : sal_False;
231 } catch (sql::MethodNotImplementedException) {
232 mysqlc_sdbc_driver::throwFeatureNotImplementedException(_methodName, *this);
233 } catch (sql::InvalidArgumentException) {
234 mysqlc_sdbc_driver::throwInvalidArgumentException(_methodName, *this);
235 } catch (const sql::SQLException& e) {
236 mysqlc_sdbc_driver::translateAndThrow(e, *this, m_rConnection.getConnectionEncoding());
237 }
238 return boolMetaData;
239 }
240 /* }}} */
241
242
243 /* {{{ ODatabaseMetaData::impl_getRSTypeMetaData() -I- */
impl_getRSTypeMetaData(const sal_Char * _methodName,bool (sql::DatabaseMetaData::* _Method)(int),sal_Int32 _resultSetType)244 sal_Bool ODatabaseMetaData::impl_getRSTypeMetaData(const sal_Char* _methodName, bool (sql::DatabaseMetaData::*_Method)(int), sal_Int32 _resultSetType )
245 {
246 int resultSetType(sql::ResultSet::TYPE_FORWARD_ONLY);
247 switch ( _resultSetType ) {
248 case ResultSetType::SCROLL_INSENSITIVE: resultSetType = sql::ResultSet::TYPE_SCROLL_INSENSITIVE; break;
249 case ResultSetType::SCROLL_SENSITIVE: resultSetType = sql::ResultSet::TYPE_SCROLL_SENSITIVE; break;
250 }
251
252 return impl_getBoolMetaData(_methodName, _Method, resultSetType);
253 }
254 /* }}} */
255
256
257 /* {{{ ODatabaseMetaData::getCatalogSeparator() -I- */
getCatalogSeparator()258 OUString SAL_CALL ODatabaseMetaData::getCatalogSeparator()
259 throw(SQLException, RuntimeException)
260 {
261 return impl_getStringMetaData("getCatalogSeparator", &sql::DatabaseMetaData::getCatalogSeparator);
262 }
263 /* }}} */
264
265
266 /* {{{ ODatabaseMetaData::getMaxBinaryLiteralLength() -I- */
getMaxBinaryLiteralLength()267 sal_Int32 SAL_CALL ODatabaseMetaData::getMaxBinaryLiteralLength()
268 throw(SQLException, RuntimeException)
269 {
270 return impl_getInt32MetaData("getMaxBinaryLiteralLength", &sql::DatabaseMetaData::getMaxBinaryLiteralLength);
271 }
272 /* }}} */
273
274
275 /* {{{ ODatabaseMetaData::getMaxRowSize() -I- */
getMaxRowSize()276 sal_Int32 SAL_CALL ODatabaseMetaData::getMaxRowSize()
277 throw(SQLException, RuntimeException)
278 {
279 return impl_getInt32MetaData("getMaxRowSize", &sql::DatabaseMetaData::getMaxRowSize);
280 }
281 /* }}} */
282
283
284 /* {{{ ODatabaseMetaData::getMaxCatalogNameLength() -I- */
getMaxCatalogNameLength()285 sal_Int32 SAL_CALL ODatabaseMetaData::getMaxCatalogNameLength()
286 throw(SQLException, RuntimeException)
287 {
288 return impl_getInt32MetaData("getMaxCatalogNameLength", &sql::DatabaseMetaData::getMaxCatalogNameLength);
289 }
290 /* }}} */
291
292
293 /* {{{ ODatabaseMetaData::getMaxCharLiteralLength() -I- */
getMaxCharLiteralLength()294 sal_Int32 SAL_CALL ODatabaseMetaData::getMaxCharLiteralLength()
295 throw(SQLException, RuntimeException)
296 {
297 return impl_getInt32MetaData("getMaxCharLiteralLength", &sql::DatabaseMetaData::getMaxCharLiteralLength);
298 }
299 /* }}} */
300
301
302 /* {{{ ODatabaseMetaData::getMaxColumnNameLength() -I- */
getMaxColumnNameLength()303 sal_Int32 SAL_CALL ODatabaseMetaData::getMaxColumnNameLength()
304 throw(SQLException, RuntimeException)
305 {
306 return impl_getInt32MetaData("getMaxColumnNameLength", &sql::DatabaseMetaData::getMaxColumnNameLength);
307 }
308 /* }}} */
309
310
311 /* {{{ ODatabaseMetaData::getMaxColumnsInIndex() -I- */
getMaxColumnsInIndex()312 sal_Int32 SAL_CALL ODatabaseMetaData::getMaxColumnsInIndex()
313 throw(SQLException, RuntimeException)
314 {
315 return impl_getInt32MetaData("getMaxColumnsInIndex", &sql::DatabaseMetaData::getMaxColumnsInIndex);
316 }
317 /* }}} */
318
319
320 /* {{{ ODatabaseMetaData::getMaxCursorNameLength() -I- */
getMaxCursorNameLength()321 sal_Int32 SAL_CALL ODatabaseMetaData::getMaxCursorNameLength()
322 throw(SQLException, RuntimeException)
323 {
324 return impl_getInt32MetaData("getMaxCursorNameLength", &sql::DatabaseMetaData::getMaxCursorNameLength);
325 }
326 /* }}} */
327
328
329 /* {{{ ODatabaseMetaData::getMaxConnections() -I- */
getMaxConnections()330 sal_Int32 SAL_CALL ODatabaseMetaData::getMaxConnections()
331 throw(SQLException, RuntimeException)
332 {
333 return impl_getInt32MetaData("getMaxConnections", &sql::DatabaseMetaData::getMaxConnections);
334 }
335 /* }}} */
336
337
338 /* {{{ ODatabaseMetaData::getMaxColumnsInTable() -I- */
getMaxColumnsInTable()339 sal_Int32 SAL_CALL ODatabaseMetaData::getMaxColumnsInTable()
340 throw(SQLException, RuntimeException)
341 {
342 return impl_getInt32MetaData("getMaxColumnsInTable", &sql::DatabaseMetaData::getMaxColumnsInTable);
343 }
344 /* }}} */
345
346
347 /* {{{ ODatabaseMetaData::getMaxStatementLength() -I- */
getMaxStatementLength()348 sal_Int32 SAL_CALL ODatabaseMetaData::getMaxStatementLength()
349 throw(SQLException, RuntimeException)
350 {
351 return impl_getInt32MetaData("getMaxStatementLength", &sql::DatabaseMetaData::getMaxStatementLength);
352 }
353 /* }}} */
354
355
356 /* {{{ ODatabaseMetaData::getMaxTableNameLength() -I- */
getMaxTableNameLength()357 sal_Int32 SAL_CALL ODatabaseMetaData::getMaxTableNameLength()
358 throw(SQLException, RuntimeException)
359 {
360 return impl_getInt32MetaData("getMaxTableNameLength", &sql::DatabaseMetaData::getMaxTableNameLength);
361 }
362 /* }}} */
363
364 /* {{{ ODatabaseMetaData::getMaxTablesInSelect() -I- */
getMaxTablesInSelect()365 sal_Int32 SAL_CALL ODatabaseMetaData::getMaxTablesInSelect()
366 throw(SQLException, RuntimeException)
367 {
368 return impl_getInt32MetaData("getMaxTablesInSelect", &sql::DatabaseMetaData::getMaxTablesInSelect);
369 }
370 /* }}} */
371
372
373 /* {{{ ODatabaseMetaData::doesMaxRowSizeIncludeBlobs() -I- */
doesMaxRowSizeIncludeBlobs()374 sal_Bool SAL_CALL ODatabaseMetaData::doesMaxRowSizeIncludeBlobs()
375 throw(SQLException, RuntimeException)
376 {
377 return impl_getBoolMetaData("doesMaxRowSizeIncludeBlobs", &sql::DatabaseMetaData::doesMaxRowSizeIncludeBlobs);
378 }
379 /* }}} */
380
381
382 /* {{{ ODatabaseMetaData::storesLowerCaseQuotedIdentifiers() -I- */
storesLowerCaseQuotedIdentifiers()383 sal_Bool SAL_CALL ODatabaseMetaData::storesLowerCaseQuotedIdentifiers()
384 throw(SQLException, RuntimeException)
385 {
386 return impl_getBoolMetaData("storesLowerCaseQuotedIdentifiers", &sql::DatabaseMetaData::storesLowerCaseQuotedIdentifiers);
387 }
388 /* }}} */
389
390
391 /* {{{ ODatabaseMetaData::storesLowerCaseIdentifiers() -I- */
storesLowerCaseIdentifiers()392 sal_Bool SAL_CALL ODatabaseMetaData::storesLowerCaseIdentifiers()
393 throw(SQLException, RuntimeException)
394 {
395 return impl_getBoolMetaData("storesLowerCaseIdentifiers", &sql::DatabaseMetaData::storesLowerCaseIdentifiers);
396 }
397 /* }}} */
398
399
400 /* {{{ ODatabaseMetaData::storesMixedCaseQuotedIdentifiers() -I- */
storesMixedCaseQuotedIdentifiers()401 sal_Bool SAL_CALL ODatabaseMetaData::storesMixedCaseQuotedIdentifiers()
402 throw(SQLException, RuntimeException)
403 {
404 return impl_getBoolMetaData("storesMixedCaseQuotedIdentifiers", &sql::DatabaseMetaData::storesMixedCaseQuotedIdentifiers);
405 }
406 /* }}} */
407
408
409 /* {{{ ODatabaseMetaData::storesMixedCaseIdentifiers() -I- */
storesMixedCaseIdentifiers()410 sal_Bool SAL_CALL ODatabaseMetaData::storesMixedCaseIdentifiers()
411 throw(SQLException, RuntimeException)
412 {
413 return impl_getBoolMetaData("storesMixedCaseIdentifiers", &sql::DatabaseMetaData::storesMixedCaseIdentifiers);
414 }
415 /* }}} */
416
417
418 /* {{{ ODatabaseMetaData::storesUpperCaseQuotedIdentifiers() -I- */
storesUpperCaseQuotedIdentifiers()419 sal_Bool SAL_CALL ODatabaseMetaData::storesUpperCaseQuotedIdentifiers()
420 throw(SQLException, RuntimeException)
421 {
422 return impl_getBoolMetaData("storesUpperCaseQuotedIdentifiers", &sql::DatabaseMetaData::storesUpperCaseQuotedIdentifiers);
423 }
424 /* }}} */
425
426
427 /* {{{ ODatabaseMetaData::storesUpperCaseIdentifiers() -I- */
storesUpperCaseIdentifiers()428 sal_Bool SAL_CALL ODatabaseMetaData::storesUpperCaseIdentifiers()
429 throw(SQLException, RuntimeException)
430 {
431 return impl_getBoolMetaData("storesUpperCaseIdentifiers", &sql::DatabaseMetaData::storesUpperCaseIdentifiers);
432 }
433 /* }}} */
434
435
436 /* {{{ ODatabaseMetaData::supportsAlterTableWithAddColumn() -I- */
supportsAlterTableWithAddColumn()437 sal_Bool SAL_CALL ODatabaseMetaData::supportsAlterTableWithAddColumn()
438 throw(SQLException, RuntimeException)
439 {
440 return impl_getBoolMetaData("supportsAlterTableWithAddColumn", &sql::DatabaseMetaData::supportsAlterTableWithAddColumn);
441 }
442 /* }}} */
443
444
445 /* {{{ ODatabaseMetaData::supportsAlterTableWithDropColumn() -I- */
supportsAlterTableWithDropColumn()446 sal_Bool SAL_CALL ODatabaseMetaData::supportsAlterTableWithDropColumn()
447 throw(SQLException, RuntimeException)
448 {
449 return impl_getBoolMetaData("supportsAlterTableWithDropColumn", &sql::DatabaseMetaData::supportsAlterTableWithDropColumn);
450 }
451 /* }}} */
452
453
454 /* {{{ ODatabaseMetaData::getMaxIndexLength() -I- */
getMaxIndexLength()455 sal_Int32 SAL_CALL ODatabaseMetaData::getMaxIndexLength()
456 throw(SQLException, RuntimeException)
457 {
458 return impl_getInt32MetaData("getMaxIndexLength", &sql::DatabaseMetaData::getMaxIndexLength);
459 }
460 /* }}} */
461
462
463 /* {{{ ODatabaseMetaData::supportsNonNullableColumns() -I- */
supportsNonNullableColumns()464 sal_Bool SAL_CALL ODatabaseMetaData::supportsNonNullableColumns()
465 throw(SQLException, RuntimeException)
466 {
467 return impl_getBoolMetaData("supportsNonNullableColumns", &sql::DatabaseMetaData::supportsNonNullableColumns);
468 }
469 /* }}} */
470
471
472 /* {{{ ODatabaseMetaData::getCatalogTerm() -I- */
getCatalogTerm()473 OUString SAL_CALL ODatabaseMetaData::getCatalogTerm()
474 throw(SQLException, RuntimeException)
475 {
476 return impl_getStringMetaData("getCatalogTerm", &sql::DatabaseMetaData::getCatalogTerm);
477 }
478 /* }}} */
479
480
481 /* {{{ ODatabaseMetaData::getIdentifierQuoteString() -I- */
getIdentifierQuoteString()482 OUString SAL_CALL ODatabaseMetaData::getIdentifierQuoteString()
483 throw(SQLException, RuntimeException)
484 {
485 if (identifier_quote_string_set == false) {
486 identifier_quote_string = impl_getStringMetaData("getIdentifierQuoteString", &sql::DatabaseMetaData::getIdentifierQuoteString);
487 identifier_quote_string_set = true;
488 }
489 return identifier_quote_string;
490 }
491 /* }}} */
492
493
494 /* {{{ ODatabaseMetaData::getExtraNameCharacters() -I- */
getExtraNameCharacters()495 OUString SAL_CALL ODatabaseMetaData::getExtraNameCharacters()
496 throw(SQLException, RuntimeException)
497 {
498 return impl_getStringMetaData("getExtraNameCharacters", &sql::DatabaseMetaData::getExtraNameCharacters);
499 }
500 /* }}} */
501
502
503 /* {{{ ODatabaseMetaData::supportsDifferentTableCorrelationNames() -I- */
supportsDifferentTableCorrelationNames()504 sal_Bool SAL_CALL ODatabaseMetaData::supportsDifferentTableCorrelationNames()
505 throw(SQLException, RuntimeException)
506 {
507 return impl_getBoolMetaData("supportsDifferentTableCorrelationNames", &sql::DatabaseMetaData::supportsDifferentTableCorrelationNames);
508 }
509 /* }}} */
510
511
512 /* {{{ ODatabaseMetaData::isCatalogAtStart() -I- */
isCatalogAtStart()513 sal_Bool SAL_CALL ODatabaseMetaData::isCatalogAtStart()
514 throw(SQLException, RuntimeException)
515 {
516 return impl_getBoolMetaData("isCatalogAtStart", &sql::DatabaseMetaData::isCatalogAtStart);
517 }
518 /* }}} */
519
520
521 /* {{{ ODatabaseMetaData::dataDefinitionIgnoredInTransactions() -I- */
dataDefinitionIgnoredInTransactions()522 sal_Bool SAL_CALL ODatabaseMetaData::dataDefinitionIgnoredInTransactions()
523 throw(SQLException, RuntimeException)
524 {
525 return impl_getBoolMetaData("dataDefinitionIgnoredInTransactions", &sql::DatabaseMetaData::dataDefinitionIgnoredInTransactions);
526 }
527 /* }}} */
528
529
530 /* {{{ ODatabaseMetaData::dataDefinitionCausesTransactionCommit() -I- */
dataDefinitionCausesTransactionCommit()531 sal_Bool SAL_CALL ODatabaseMetaData::dataDefinitionCausesTransactionCommit()
532 throw(SQLException, RuntimeException)
533 {
534 return impl_getBoolMetaData("dataDefinitionCausesTransactionCommit", &sql::DatabaseMetaData::dataDefinitionCausesTransactionCommit);
535 }
536 /* }}} */
537
538
539 /* {{{ ODatabaseMetaData::supportsDataManipulationTransactionsOnly() -I- */
supportsDataManipulationTransactionsOnly()540 sal_Bool SAL_CALL ODatabaseMetaData::supportsDataManipulationTransactionsOnly()
541 throw(SQLException, RuntimeException)
542 {
543 return impl_getBoolMetaData("supportsDataManipulationTransactionsOnly", &sql::DatabaseMetaData::supportsDataManipulationTransactionsOnly);
544 }
545 /* }}} */
546
547
548 /* {{{ ODatabaseMetaData::supportsDataDefinitionAndDataManipulationTransactions() -I- */
supportsDataDefinitionAndDataManipulationTransactions()549 sal_Bool SAL_CALL ODatabaseMetaData::supportsDataDefinitionAndDataManipulationTransactions()
550 throw(SQLException, RuntimeException)
551 {
552 return impl_getBoolMetaData("supportsDataDefinitionAndDataManipulationTransactions", &sql::DatabaseMetaData::supportsDataDefinitionAndDataManipulationTransactions);
553 }
554 /* }}} */
555
556
557 /* {{{ ODatabaseMetaData::supportsPositionedDelete() -I- */
supportsPositionedDelete()558 sal_Bool SAL_CALL ODatabaseMetaData::supportsPositionedDelete()
559 throw(SQLException, RuntimeException)
560 {
561 return impl_getBoolMetaData("supportsPositionedDelete", &sql::DatabaseMetaData::supportsPositionedDelete);
562 }
563 /* }}} */
564
565
566 /* {{{ ODatabaseMetaData::supportsPositionedUpdate() -I- */
supportsPositionedUpdate()567 sal_Bool SAL_CALL ODatabaseMetaData::supportsPositionedUpdate()
568 throw(SQLException, RuntimeException)
569 {
570 return impl_getBoolMetaData("supportsPositionedUpdate", &sql::DatabaseMetaData::supportsPositionedUpdate);
571 }
572 /* }}} */
573
574
575 /* {{{ ODatabaseMetaData::supportsOpenStatementsAcrossRollback() -I- */
supportsOpenStatementsAcrossRollback()576 sal_Bool SAL_CALL ODatabaseMetaData::supportsOpenStatementsAcrossRollback()
577 throw(SQLException, RuntimeException)
578 {
579 return impl_getBoolMetaData("supportsOpenStatementsAcrossRollback", &sql::DatabaseMetaData::supportsOpenStatementsAcrossRollback);
580 }
581 /* }}} */
582
583
584 /* {{{ ODatabaseMetaData::supportsOpenStatementsAcrossCommit() -I- */
supportsOpenStatementsAcrossCommit()585 sal_Bool SAL_CALL ODatabaseMetaData::supportsOpenStatementsAcrossCommit()
586 throw(SQLException, RuntimeException)
587 {
588 return impl_getBoolMetaData("supportsOpenStatementsAcrossCommit", &sql::DatabaseMetaData::supportsOpenStatementsAcrossCommit);
589 }
590 /* }}} */
591
592
593 /* {{{ ODatabaseMetaData::supportsOpenCursorsAcrossCommit() -I- */
supportsOpenCursorsAcrossCommit()594 sal_Bool SAL_CALL ODatabaseMetaData::supportsOpenCursorsAcrossCommit()
595 throw(SQLException, RuntimeException)
596 {
597 return impl_getBoolMetaData("supportsOpenCursorsAcrossCommit", &sql::DatabaseMetaData::supportsOpenCursorsAcrossCommit);
598 }
599 /* }}} */
600
601
602 /* {{{ ODatabaseMetaData::supportsOpenCursorsAcrossRollback() -I- */
supportsOpenCursorsAcrossRollback()603 sal_Bool SAL_CALL ODatabaseMetaData::supportsOpenCursorsAcrossRollback()
604 throw(SQLException, RuntimeException)
605 {
606 return impl_getBoolMetaData("supportsOpenCursorsAcrossRollback", &sql::DatabaseMetaData::supportsOpenCursorsAcrossRollback);
607 }
608 /* }}} */
609
610
611 /* {{{ ODatabaseMetaData::supportsTransactionIsolationLevel() -I- */
supportsTransactionIsolationLevel(sal_Int32 level)612 sal_Bool SAL_CALL ODatabaseMetaData::supportsTransactionIsolationLevel(sal_Int32 level)
613 throw(SQLException, RuntimeException)
614 {
615 return impl_getBoolMetaData("supportsTransactionIsolationLevel", &sql::DatabaseMetaData::supportsTransactionIsolationLevel, level);
616 }
617 /* }}} */
618
619
620 /* {{{ ODatabaseMetaData::supportsSchemasInDataManipulation() -I- */
supportsSchemasInDataManipulation()621 sal_Bool SAL_CALL ODatabaseMetaData::supportsSchemasInDataManipulation()
622 throw(SQLException, RuntimeException)
623 {
624 return impl_getBoolMetaData("supportsSchemasInDataManipulation", &sql::DatabaseMetaData::supportsSchemasInDataManipulation);
625 }
626 /* }}} */
627
628
629 /* {{{ ODatabaseMetaData::supportsANSI92FullSQL() -I- */
supportsANSI92FullSQL()630 sal_Bool SAL_CALL ODatabaseMetaData::supportsANSI92FullSQL()
631 throw(SQLException, RuntimeException)
632 {
633 return impl_getBoolMetaData("supportsANSI92FullSQL", &sql::DatabaseMetaData::supportsANSI92FullSQL);
634 }
635 /* }}} */
636
637
638 /* {{{ ODatabaseMetaData::supportsANSI92EntryLevelSQL() -I- */
supportsANSI92EntryLevelSQL()639 sal_Bool SAL_CALL ODatabaseMetaData::supportsANSI92EntryLevelSQL()
640 throw(SQLException, RuntimeException)
641 {
642 return impl_getBoolMetaData("supportsANSI92EntryLevelSQL", &sql::DatabaseMetaData::supportsANSI92EntryLevelSQL);
643 }
644 /* }}} */
645
646
647 /* {{{ ODatabaseMetaData::supportsIntegrityEnhancementFacility() -I- */
supportsIntegrityEnhancementFacility()648 sal_Bool SAL_CALL ODatabaseMetaData::supportsIntegrityEnhancementFacility()
649 throw(SQLException, RuntimeException)
650 {
651 return impl_getBoolMetaData("supportsIntegrityEnhancementFacility", &sql::DatabaseMetaData::supportsIntegrityEnhancementFacility);
652 }
653 /* }}} */
654
655
656 /* {{{ ODatabaseMetaData::supportsSchemasInIndexDefinitions() -I- */
supportsSchemasInIndexDefinitions()657 sal_Bool SAL_CALL ODatabaseMetaData::supportsSchemasInIndexDefinitions()
658 throw(SQLException, RuntimeException)
659 {
660 return impl_getBoolMetaData("supportsSchemasInIndexDefinitions", &sql::DatabaseMetaData::supportsSchemasInIndexDefinitions);
661 }
662 /* }}} */
663
664
665 /* {{{ ODatabaseMetaData::supportsSchemasInTableDefinitions() -I- */
supportsSchemasInTableDefinitions()666 sal_Bool SAL_CALL ODatabaseMetaData::supportsSchemasInTableDefinitions()
667 throw(SQLException, RuntimeException)
668 {
669 return impl_getBoolMetaData("supportsSchemasInTableDefinitions", &sql::DatabaseMetaData::supportsSchemasInTableDefinitions);
670 }
671 /* }}} */
672
673
674 /* {{{ ODatabaseMetaData::supportsCatalogsInTableDefinitions() -I- */
supportsCatalogsInTableDefinitions()675 sal_Bool SAL_CALL ODatabaseMetaData::supportsCatalogsInTableDefinitions()
676 throw(SQLException, RuntimeException)
677 {
678 return impl_getBoolMetaData("supportsCatalogsInTableDefinitions", &sql::DatabaseMetaData::supportsCatalogsInTableDefinitions);
679 }
680 /* }}} */
681
682
683 /* {{{ ODatabaseMetaData::supportsCatalogsInIndexDefinitions() -I- */
supportsCatalogsInIndexDefinitions()684 sal_Bool SAL_CALL ODatabaseMetaData::supportsCatalogsInIndexDefinitions()
685 throw(SQLException, RuntimeException)
686 {
687 return impl_getBoolMetaData("supportsCatalogsInIndexDefinitions", &sql::DatabaseMetaData::supportsCatalogsInIndexDefinitions);
688 }
689 /* }}} */
690
691
692 /* {{{ ODatabaseMetaData::supportsCatalogsInDataManipulation() -I- */
supportsCatalogsInDataManipulation()693 sal_Bool SAL_CALL ODatabaseMetaData::supportsCatalogsInDataManipulation()
694 throw(SQLException, RuntimeException)
695 {
696 return impl_getBoolMetaData("supportsCatalogsInDataManipulation", &sql::DatabaseMetaData::supportsCatalogsInDataManipulation);
697 }
698 /* }}} */
699
700
701 /* {{{ ODatabaseMetaData::supportsOuterJoins() -I- */
supportsOuterJoins()702 sal_Bool SAL_CALL ODatabaseMetaData::supportsOuterJoins()
703 throw(SQLException, RuntimeException)
704 {
705 return impl_getBoolMetaData("supportsOuterJoins", &sql::DatabaseMetaData::supportsOuterJoins);
706 }
707 /* }}} */
708
709
710 /* {{{ ODatabaseMetaData::getMaxStatements() -I- */
getMaxStatements()711 sal_Int32 SAL_CALL ODatabaseMetaData::getMaxStatements()
712 throw(SQLException, RuntimeException)
713 {
714 return impl_getInt32MetaData("getMaxStatements", &sql::DatabaseMetaData::getMaxStatements);
715 }
716 /* }}} */
717
718
719 /* {{{ ODatabaseMetaData::getMaxProcedureNameLength() -I- */
getMaxProcedureNameLength()720 sal_Int32 SAL_CALL ODatabaseMetaData::getMaxProcedureNameLength()
721 throw(SQLException, RuntimeException)
722 {
723 return impl_getInt32MetaData("getMaxProcedureNameLength", &sql::DatabaseMetaData::getMaxProcedureNameLength);
724 }
725 /* }}} */
726
727
728 /* {{{ ODatabaseMetaData::getMaxSchemaNameLength() -I- */
getMaxSchemaNameLength()729 sal_Int32 SAL_CALL ODatabaseMetaData::getMaxSchemaNameLength()
730 throw(SQLException, RuntimeException)
731 {
732 return impl_getInt32MetaData("getMaxSchemaNameLength", &sql::DatabaseMetaData::getMaxSchemaNameLength);
733 }
734 /* }}} */
735
736
737 /* {{{ ODatabaseMetaData::supportsTransactions() -I- */
supportsTransactions()738 sal_Bool SAL_CALL ODatabaseMetaData::supportsTransactions()
739 throw(SQLException, RuntimeException)
740 {
741 return impl_getBoolMetaData("supportsTransactions", &sql::DatabaseMetaData::supportsTransactions);
742 }
743 /* }}} */
744
745
746 /* {{{ ODatabaseMetaData::allProceduresAreCallable() -I- */
allProceduresAreCallable()747 sal_Bool SAL_CALL ODatabaseMetaData::allProceduresAreCallable()
748 throw(SQLException, RuntimeException)
749 {
750 return impl_getBoolMetaData("allProceduresAreCallable", &sql::DatabaseMetaData::allProceduresAreCallable);
751 }
752 /* }}} */
753
754
755 /* {{{ ODatabaseMetaData::supportsStoredProcedures() -I- */
supportsStoredProcedures()756 sal_Bool SAL_CALL ODatabaseMetaData::supportsStoredProcedures()
757 throw(SQLException, RuntimeException)
758 {
759 return impl_getBoolMetaData("supportsStoredProcedures", &sql::DatabaseMetaData::supportsStoredProcedures);
760 }
761 /* }}} */
762
763
764 /* {{{ ODatabaseMetaData::supportsSelectForUpdate() -I- */
supportsSelectForUpdate()765 sal_Bool SAL_CALL ODatabaseMetaData::supportsSelectForUpdate()
766 throw(SQLException, RuntimeException)
767 {
768 return impl_getBoolMetaData("supportsSelectForUpdate", &sql::DatabaseMetaData::supportsSelectForUpdate);
769 }
770 /* }}} */
771
772
773 /* {{{ ODatabaseMetaData::allTablesAreSelectable() -I- */
allTablesAreSelectable()774 sal_Bool SAL_CALL ODatabaseMetaData::allTablesAreSelectable()
775 throw(SQLException, RuntimeException)
776 {
777 return impl_getBoolMetaData("allTablesAreSelectable", &sql::DatabaseMetaData::allTablesAreSelectable);
778 }
779 /* }}} */
780
781
782 /* {{{ ODatabaseMetaData::isReadOnly() -I- */
isReadOnly()783 sal_Bool SAL_CALL ODatabaseMetaData::isReadOnly()
784 throw(SQLException, RuntimeException)
785 {
786 return impl_getBoolMetaData("isReadOnly", &sql::DatabaseMetaData::isReadOnly);
787 }
788 /* }}} */
789
790
791 /* {{{ ODatabaseMetaData::usesLocalFiles() -I- */
usesLocalFiles()792 sal_Bool SAL_CALL ODatabaseMetaData::usesLocalFiles()
793 throw(SQLException, RuntimeException)
794 {
795 return impl_getBoolMetaData("usesLocalFiles", &sql::DatabaseMetaData::usesLocalFiles);
796 }
797 /* }}} */
798
799
800 /* {{{ ODatabaseMetaData::usesLocalFilePerTable() -I- */
usesLocalFilePerTable()801 sal_Bool SAL_CALL ODatabaseMetaData::usesLocalFilePerTable()
802 throw(SQLException, RuntimeException)
803 {
804 return impl_getBoolMetaData("usesLocalFilePerTable", &sql::DatabaseMetaData::usesLocalFilePerTable);
805 }
806 /* }}} */
807
808
809 /* {{{ ODatabaseMetaData::supportsTypeConversion() -I- */
supportsTypeConversion()810 sal_Bool SAL_CALL ODatabaseMetaData::supportsTypeConversion()
811 throw(SQLException, RuntimeException)
812 {
813 return impl_getBoolMetaData("supportsTypeConversion", &sql::DatabaseMetaData::supportsTypeConversion);
814 }
815 /* }}} */
816
817
818 /* {{{ ODatabaseMetaData::nullPlusNonNullIsNull() -I- */
nullPlusNonNullIsNull()819 sal_Bool SAL_CALL ODatabaseMetaData::nullPlusNonNullIsNull()
820 throw(SQLException, RuntimeException)
821 {
822 return impl_getBoolMetaData("nullPlusNonNullIsNull", &sql::DatabaseMetaData::nullPlusNonNullIsNull);
823 }
824 /* }}} */
825
826
827 /* {{{ ODatabaseMetaData::supportsColumnAliasing() -I- */
supportsColumnAliasing()828 sal_Bool SAL_CALL ODatabaseMetaData::supportsColumnAliasing()
829 throw(SQLException, RuntimeException)
830 {
831 return impl_getBoolMetaData("supportsColumnAliasing", &sql::DatabaseMetaData::supportsColumnAliasing);
832 }
833 /* }}} */
834
835
836 /* {{{ ODatabaseMetaData::supportsTableCorrelationNames() -I- */
supportsTableCorrelationNames()837 sal_Bool SAL_CALL ODatabaseMetaData::supportsTableCorrelationNames()
838 throw(SQLException, RuntimeException)
839 {
840 return impl_getBoolMetaData("supportsTableCorrelationNames", &sql::DatabaseMetaData::supportsTableCorrelationNames);
841 }
842 /* }}} */
843
844
845 /* {{{ ODatabaseMetaData::supportsConvert() -I- */
supportsConvert(sal_Int32,sal_Int32)846 sal_Bool SAL_CALL ODatabaseMetaData::supportsConvert(sal_Int32 /* fromType */, sal_Int32 /* toType */)
847 throw(SQLException, RuntimeException)
848 {
849 OSL_TRACE("ODatabaseMetaData::supportsConvert");
850 try {
851 /* ToDo -> use supportsConvert( fromType, toType) */
852 return meta->supportsConvert()? sal_True:sal_False;
853 } catch (sql::MethodNotImplementedException) {
854 mysqlc_sdbc_driver::throwFeatureNotImplementedException("ODatabaseMetaData::supportsConvert", *this);
855 } catch (sql::InvalidArgumentException) {
856 mysqlc_sdbc_driver::throwInvalidArgumentException("ODatabaseMetaData::supportsConvert", *this);
857 } catch (const sql::SQLException& e) {
858 mysqlc_sdbc_driver::translateAndThrow(e, *this, m_rConnection.getConnectionEncoding());
859 }
860 return sal_False;
861 }
862 /* }}} */
863
864
865 /* {{{ ODatabaseMetaData::supportsExpressionsInOrderBy() -I- */
supportsExpressionsInOrderBy()866 sal_Bool SAL_CALL ODatabaseMetaData::supportsExpressionsInOrderBy()
867 throw(SQLException, RuntimeException)
868 {
869 return impl_getBoolMetaData("supportsExpressionsInOrderBy", &sql::DatabaseMetaData::supportsExpressionsInOrderBy);
870 }
871 /* }}} */
872
873
874 /* {{{ ODatabaseMetaData::supportsGroupBy() -I- */
supportsGroupBy()875 sal_Bool SAL_CALL ODatabaseMetaData::supportsGroupBy()
876 throw(SQLException, RuntimeException)
877 {
878 return impl_getBoolMetaData("supportsGroupBy", &sql::DatabaseMetaData::supportsGroupBy);
879 }
880 /* }}} */
881
882
883 /* {{{ ODatabaseMetaData::supportsGroupByBeyondSelect() -I- */
supportsGroupByBeyondSelect()884 sal_Bool SAL_CALL ODatabaseMetaData::supportsGroupByBeyondSelect()
885 throw(SQLException, RuntimeException)
886 {
887 return impl_getBoolMetaData("supportsGroupByBeyondSelect", &sql::DatabaseMetaData::supportsGroupByBeyondSelect);
888 }
889 /* }}} */
890
891
892 /* {{{ ODatabaseMetaData::supportsGroupByUnrelated() -I- */
supportsGroupByUnrelated()893 sal_Bool SAL_CALL ODatabaseMetaData::supportsGroupByUnrelated()
894 throw(SQLException, RuntimeException)
895 {
896 return impl_getBoolMetaData("supportsGroupByUnrelated", &sql::DatabaseMetaData::supportsGroupByUnrelated);
897 }
898 /* }}} */
899
900
901 /* {{{ ODatabaseMetaData::supportsMultipleTransactions() -I- */
supportsMultipleTransactions()902 sal_Bool SAL_CALL ODatabaseMetaData::supportsMultipleTransactions()
903 throw(SQLException, RuntimeException)
904 {
905 return impl_getBoolMetaData("supportsMultipleTransactions", &sql::DatabaseMetaData::supportsMultipleTransactions);
906 }
907 /* }}} */
908
909
910 /* {{{ ODatabaseMetaData::supportsMultipleResultSets() -I- */
supportsMultipleResultSets()911 sal_Bool SAL_CALL ODatabaseMetaData::supportsMultipleResultSets()
912 throw(SQLException, RuntimeException)
913 {
914 return impl_getBoolMetaData("supportsMultipleResultSets", &sql::DatabaseMetaData::supportsMultipleResultSets);
915 }
916 /* }}} */
917
918
919 /* {{{ ODatabaseMetaData::supportsLikeEscapeClause() -I- */
supportsLikeEscapeClause()920 sal_Bool SAL_CALL ODatabaseMetaData::supportsLikeEscapeClause()
921 throw(SQLException, RuntimeException)
922 {
923 return impl_getBoolMetaData("supportsLikeEscapeClause", &sql::DatabaseMetaData::supportsLikeEscapeClause);
924 }
925 /* }}} */
926
927
928 /* {{{ ODatabaseMetaData::supportsOrderByUnrelated() -I- */
supportsOrderByUnrelated()929 sal_Bool SAL_CALL ODatabaseMetaData::supportsOrderByUnrelated()
930 throw(SQLException, RuntimeException)
931 {
932 return impl_getBoolMetaData("supportsOrderByUnrelated", &sql::DatabaseMetaData::supportsOrderByUnrelated);
933 }
934 /* }}} */
935
936
937 /* {{{ ODatabaseMetaData::supportsUnion() -I- */
supportsUnion()938 sal_Bool SAL_CALL ODatabaseMetaData::supportsUnion()
939 throw(SQLException, RuntimeException)
940 {
941 return impl_getBoolMetaData("supportsUnion", &sql::DatabaseMetaData::supportsUnion);
942 }
943 /* }}} */
944
945
946 /* {{{ ODatabaseMetaData::supportsUnionAll() -I- */
supportsUnionAll()947 sal_Bool SAL_CALL ODatabaseMetaData::supportsUnionAll()
948 throw(SQLException, RuntimeException)
949 {
950 return impl_getBoolMetaData("supportsUnionAll", &sql::DatabaseMetaData::supportsUnionAll);
951 }
952 /* }}} */
953
954
955 /* {{{ ODatabaseMetaData::supportsMixedCaseIdentifiers() -I- */
supportsMixedCaseIdentifiers()956 sal_Bool SAL_CALL ODatabaseMetaData::supportsMixedCaseIdentifiers()
957 throw(SQLException, RuntimeException)
958 {
959 return impl_getBoolMetaData("supportsMixedCaseIdentifiers", &sql::DatabaseMetaData::supportsMixedCaseIdentifiers);
960 }
961 /* }}} */
962
963
964 /* {{{ ODatabaseMetaData::supportsMixedCaseQuotedIdentifiers() -I- */
supportsMixedCaseQuotedIdentifiers()965 sal_Bool SAL_CALL ODatabaseMetaData::supportsMixedCaseQuotedIdentifiers()
966 throw(SQLException, RuntimeException)
967 {
968 return impl_getBoolMetaData("supportsMixedCaseQuotedIdentifiers", &sql::DatabaseMetaData::supportsMixedCaseQuotedIdentifiers);
969 }
970 /* }}} */
971
972
973 /* {{{ ODatabaseMetaData::nullsAreSortedAtEnd() -I- */
nullsAreSortedAtEnd()974 sal_Bool SAL_CALL ODatabaseMetaData::nullsAreSortedAtEnd()
975 throw(SQLException, RuntimeException)
976 {
977 return impl_getBoolMetaData("nullsAreSortedAtEnd", &sql::DatabaseMetaData::nullsAreSortedAtEnd);
978 }
979 /* }}} */
980
981
982 /* {{{ ODatabaseMetaData::nullsAreSortedAtStart() -I- */
nullsAreSortedAtStart()983 sal_Bool SAL_CALL ODatabaseMetaData::nullsAreSortedAtStart()
984 throw(SQLException, RuntimeException)
985 {
986 return impl_getBoolMetaData("nullsAreSortedAtStart", &sql::DatabaseMetaData::nullsAreSortedAtStart);
987 }
988 /* }}} */
989
990
991 /* {{{ ODatabaseMetaData::nullsAreSortedHigh() -I- */
nullsAreSortedHigh()992 sal_Bool SAL_CALL ODatabaseMetaData::nullsAreSortedHigh()
993 throw(SQLException, RuntimeException)
994 {
995 return impl_getBoolMetaData("nullsAreSortedHigh", &sql::DatabaseMetaData::nullsAreSortedHigh);
996 }
997 /* }}} */
998
999
1000 /* {{{ ODatabaseMetaData::nullsAreSortedLow() -I- */
nullsAreSortedLow()1001 sal_Bool SAL_CALL ODatabaseMetaData::nullsAreSortedLow()
1002 throw(SQLException, RuntimeException)
1003 {
1004 return impl_getBoolMetaData("nullsAreSortedLow", &sql::DatabaseMetaData::nullsAreSortedLow);
1005 }
1006 /* }}} */
1007
1008
1009 /* {{{ ODatabaseMetaData::supportsSchemasInProcedureCalls() -I- */
supportsSchemasInProcedureCalls()1010 sal_Bool SAL_CALL ODatabaseMetaData::supportsSchemasInProcedureCalls()
1011 throw(SQLException, RuntimeException)
1012 {
1013 return impl_getBoolMetaData("supportsSchemasInProcedureCalls", &sql::DatabaseMetaData::supportsSchemasInProcedureCalls);
1014 }
1015 /* }}} */
1016
1017
1018 /* {{{ ODatabaseMetaData::supportsSchemasInPrivilegeDefinitions() -I- */
supportsSchemasInPrivilegeDefinitions()1019 sal_Bool SAL_CALL ODatabaseMetaData::supportsSchemasInPrivilegeDefinitions()
1020 throw(SQLException, RuntimeException)
1021 {
1022 return impl_getBoolMetaData("supportsSchemasInPrivilegeDefinitions", &sql::DatabaseMetaData::supportsSchemasInPrivilegeDefinitions);
1023 }
1024 /* }}} */
1025
1026
1027 /* {{{ ODatabaseMetaData::supportsCatalogsInProcedureCalls() -I- */
supportsCatalogsInProcedureCalls()1028 sal_Bool SAL_CALL ODatabaseMetaData::supportsCatalogsInProcedureCalls()
1029 throw(SQLException, RuntimeException)
1030 {
1031 return impl_getBoolMetaData("supportsCatalogsInProcedureCalls", &sql::DatabaseMetaData::supportsCatalogsInProcedureCalls);
1032 }
1033 /* }}} */
1034
1035
1036 /* {{{ ODatabaseMetaData::supportsCatalogsInPrivilegeDefinitions() -I- */
supportsCatalogsInPrivilegeDefinitions()1037 sal_Bool SAL_CALL ODatabaseMetaData::supportsCatalogsInPrivilegeDefinitions()
1038 throw(SQLException, RuntimeException)
1039 {
1040 return impl_getBoolMetaData("supportsCatalogsInPrivilegeDefinitions", &sql::DatabaseMetaData::supportsCatalogsInPrivilegeDefinitions);
1041 }
1042 /* }}} */
1043
1044
1045 /* {{{ ODatabaseMetaData::supportsCorrelatedSubqueries() -I- */
supportsCorrelatedSubqueries()1046 sal_Bool SAL_CALL ODatabaseMetaData::supportsCorrelatedSubqueries()
1047 throw(SQLException, RuntimeException)
1048 {
1049 return impl_getBoolMetaData("supportsCorrelatedSubqueries", &sql::DatabaseMetaData::supportsCorrelatedSubqueries);
1050 }
1051 /* }}} */
1052
1053
1054 /* {{{ ODatabaseMetaData::supportsSubqueriesInComparisons() -I- */
supportsSubqueriesInComparisons()1055 sal_Bool SAL_CALL ODatabaseMetaData::supportsSubqueriesInComparisons()
1056 throw(SQLException, RuntimeException)
1057 {
1058 return impl_getBoolMetaData("supportsSubqueriesInComparisons", &sql::DatabaseMetaData::supportsSubqueriesInComparisons);
1059 }
1060 /* }}} */
1061
1062
1063 /* {{{ ODatabaseMetaData::supportsSubqueriesInExists() -I- */
supportsSubqueriesInExists()1064 sal_Bool SAL_CALL ODatabaseMetaData::supportsSubqueriesInExists()
1065 throw(SQLException, RuntimeException)
1066 {
1067 return impl_getBoolMetaData("supportsSubqueriesInExists", &sql::DatabaseMetaData::supportsSubqueriesInExists);
1068 }
1069 /* }}} */
1070
1071
1072 /* {{{ ODatabaseMetaData::supportsSubqueriesInIns() -I- */
supportsSubqueriesInIns()1073 sal_Bool SAL_CALL ODatabaseMetaData::supportsSubqueriesInIns()
1074 throw(SQLException, RuntimeException)
1075 {
1076 return impl_getBoolMetaData("supportsSubqueriesInIns", &sql::DatabaseMetaData::supportsSubqueriesInIns);
1077 }
1078 /* }}} */
1079
1080
1081 /* {{{ ODatabaseMetaData::supportsSubqueriesInQuantifieds() -I- */
supportsSubqueriesInQuantifieds()1082 sal_Bool SAL_CALL ODatabaseMetaData::supportsSubqueriesInQuantifieds()
1083 throw(SQLException, RuntimeException)
1084 {
1085 return impl_getBoolMetaData("supportsSubqueriesInQuantifieds", &sql::DatabaseMetaData::supportsSubqueriesInQuantifieds);
1086 }
1087 /* }}} */
1088
1089
1090 /* {{{ ODatabaseMetaData::supportsANSI92IntermediateSQL() -I- */
supportsANSI92IntermediateSQL()1091 sal_Bool SAL_CALL ODatabaseMetaData::supportsANSI92IntermediateSQL()
1092 throw(SQLException, RuntimeException)
1093 {
1094 return impl_getBoolMetaData("supportsANSI92IntermediateSQL", &sql::DatabaseMetaData::supportsANSI92IntermediateSQL);
1095 }
1096 /* }}} */
1097
1098
1099 /* {{{ ODatabaseMetaData::getURL() -I- */
getURL()1100 OUString SAL_CALL ODatabaseMetaData::getURL()
1101 throw(SQLException, RuntimeException)
1102 {
1103 OSL_TRACE("ODatabaseMetaData::getURL");
1104 return m_rConnection.getConnectionSettings().connectionURL;
1105 }
1106 /* }}} */
1107
1108
1109 /* {{{ ODatabaseMetaData::getUserName() -I- */
getUserName()1110 OUString SAL_CALL ODatabaseMetaData::getUserName()
1111 throw(SQLException, RuntimeException)
1112 {
1113 return impl_getStringMetaData("getUserName", &sql::DatabaseMetaData::getUserName);
1114 }
1115 /* }}} */
1116
1117
1118 /* {{{ ODatabaseMetaData::getDriverName() -I- */
getDriverName()1119 OUString SAL_CALL ODatabaseMetaData::getDriverName()
1120 throw(SQLException, RuntimeException)
1121 {
1122 OSL_TRACE("ODatabaseMetaData::getDriverName");
1123 OUString aValue( RTL_CONSTASCII_USTRINGPARAM( "MySQL Connector/OO.org" ) );
1124 return aValue;
1125 }
1126 /* }}} */
1127
1128
1129 /* {{{ ODatabaseMetaData::getDriverVersion() -I- */
getDriverVersion()1130 OUString SAL_CALL ODatabaseMetaData::getDriverVersion()
1131 throw(SQLException, RuntimeException)
1132 {
1133 OSL_TRACE("ODatabaseMetaData::getDriverVersion");
1134 static const OUString sVersion( RTL_CONSTASCII_USTRINGPARAM( "0.9.2" ) );
1135 return sVersion;
1136 }
1137 /* }}} */
1138
1139
1140 /* {{{ ODatabaseMetaData::getDatabaseProductVersion() -I- */
getDatabaseProductVersion()1141 OUString SAL_CALL ODatabaseMetaData::getDatabaseProductVersion()
1142 throw(SQLException, RuntimeException)
1143 {
1144 return impl_getStringMetaData("getDatabaseProductVersion", &sql::DatabaseMetaData::getDatabaseProductVersion);
1145 }
1146 /* }}} */
1147
1148
1149 /* {{{ ODatabaseMetaData::getDatabaseProductName() -I- */
getDatabaseProductName()1150 OUString SAL_CALL ODatabaseMetaData::getDatabaseProductName()
1151 throw(SQLException, RuntimeException)
1152 {
1153 return impl_getStringMetaData("getDatabaseProductName", &sql::DatabaseMetaData::getDatabaseProductName);
1154 }
1155 /* }}} */
1156
1157
1158 /* {{{ ODatabaseMetaData::getProcedureTerm() -I- */
getProcedureTerm()1159 OUString SAL_CALL ODatabaseMetaData::getProcedureTerm()
1160 throw(SQLException, RuntimeException)
1161 {
1162 return impl_getStringMetaData("getProcedureTerm", &sql::DatabaseMetaData::getProcedureTerm);
1163 }
1164 /* }}} */
1165
1166
1167 /* {{{ ODatabaseMetaData::getSchemaTerm() -I- */
getSchemaTerm()1168 OUString SAL_CALL ODatabaseMetaData::getSchemaTerm()
1169 throw(SQLException, RuntimeException)
1170 {
1171 return impl_getStringMetaData("getSchemaTerm", &sql::DatabaseMetaData::getSchemaTerm);
1172 }
1173 /* }}} */
1174
1175
1176 /* {{{ ODatabaseMetaData::getDriverMajorVersion() -I- */
getDriverMajorVersion()1177 sal_Int32 SAL_CALL ODatabaseMetaData::getDriverMajorVersion()
1178 throw(RuntimeException)
1179 {
1180 OSL_TRACE("ODatabaseMetaData::getDriverMajorVersion");
1181 return MYSQLC_VERSION_MAJOR;
1182 }
1183 /* }}} */
1184
1185
1186 /* {{{ ODatabaseMetaData::getDefaultTransactionIsolation() -I- */
getDefaultTransactionIsolation()1187 sal_Int32 SAL_CALL ODatabaseMetaData::getDefaultTransactionIsolation()
1188 throw(SQLException, RuntimeException)
1189 {
1190 OSL_TRACE("ODatabaseMetaData::getDefaultTransactionIsolation");
1191 try {
1192 switch (meta->getDefaultTransactionIsolation()) {
1193 case sql::TRANSACTION_SERIALIZABLE: return TransactionIsolation::SERIALIZABLE;
1194 case sql::TRANSACTION_REPEATABLE_READ: return TransactionIsolation::REPEATABLE_READ;
1195 case sql::TRANSACTION_READ_COMMITTED: return TransactionIsolation::READ_COMMITTED;
1196 case sql::TRANSACTION_READ_UNCOMMITTED: return TransactionIsolation::READ_UNCOMMITTED;
1197 }
1198 } catch (sql::MethodNotImplementedException) {
1199 mysqlc_sdbc_driver::throwFeatureNotImplementedException("ODatabaseMetaData::getDriverMajorVersion", *this);
1200 } catch (sql::InvalidArgumentException) {
1201 mysqlc_sdbc_driver::throwInvalidArgumentException("ODatabaseMetaData::getDriverMajorVersion", *this);
1202 } catch (const sql::SQLException& e) {
1203 mysqlc_sdbc_driver::translateAndThrow(e, *this, m_rConnection.getConnectionEncoding());
1204 }
1205 return TransactionIsolation::NONE;
1206 }
1207 /* }}} */
1208
1209
1210 /* {{{ ODatabaseMetaData::getDriverMinorVersion() -I- */
getDriverMinorVersion()1211 sal_Int32 SAL_CALL ODatabaseMetaData::getDriverMinorVersion()
1212 throw(RuntimeException)
1213 {
1214 OSL_TRACE("ODatabaseMetaData::getDriverMinorVersion");
1215 return MYSQLC_VERSION_MINOR;
1216 }
1217 /* }}} */
1218
1219
1220 /* {{{ ODatabaseMetaData::getSQLKeywords() -I- */
getSQLKeywords()1221 OUString SAL_CALL ODatabaseMetaData::getSQLKeywords()
1222 throw(SQLException, RuntimeException)
1223 {
1224 return impl_getStringMetaData("getSQLKeywords", &sql::DatabaseMetaData::getSQLKeywords);
1225 }
1226 /* }}} */
1227
1228
1229 /* {{{ ODatabaseMetaData::getSearchStringEscape() -I- */
getSearchStringEscape()1230 OUString SAL_CALL ODatabaseMetaData::getSearchStringEscape()
1231 throw(SQLException, RuntimeException)
1232 {
1233 return impl_getStringMetaData("getSearchStringEscape", &sql::DatabaseMetaData::getSearchStringEscape);
1234 }
1235 /* }}} */
1236
1237
1238 /* {{{ ODatabaseMetaData::getStringFunctions() -I- */
getStringFunctions()1239 OUString SAL_CALL ODatabaseMetaData::getStringFunctions()
1240 throw(SQLException, RuntimeException)
1241 {
1242 return impl_getStringMetaData("getStringFunctions", &sql::DatabaseMetaData::getStringFunctions);
1243 }
1244 /* }}} */
1245
1246
1247 /* {{{ ODatabaseMetaData::getTimeDateFunctions() -I- */
getTimeDateFunctions()1248 OUString SAL_CALL ODatabaseMetaData::getTimeDateFunctions()
1249 throw(SQLException, RuntimeException)
1250 {
1251 return impl_getStringMetaData("getTimeDateFunctions", &sql::DatabaseMetaData::getTimeDateFunctions);
1252 }
1253 /* }}} */
1254
1255
1256 /* {{{ ODatabaseMetaData::getSystemFunctions() -I- */
getSystemFunctions()1257 OUString SAL_CALL ODatabaseMetaData::getSystemFunctions()
1258 throw(SQLException, RuntimeException)
1259 {
1260 return impl_getStringMetaData("getSystemFunctions", &sql::DatabaseMetaData::getSystemFunctions);
1261 }
1262 /* }}} */
1263
1264
1265 /* {{{ ODatabaseMetaData::getNumericFunctions() -I- */
getNumericFunctions()1266 OUString SAL_CALL ODatabaseMetaData::getNumericFunctions()
1267 throw(SQLException, RuntimeException)
1268 {
1269 return impl_getStringMetaData("getNumericFunctions", &sql::DatabaseMetaData::getNumericFunctions);
1270 }
1271 /* }}} */
1272
1273
1274 /* {{{ ODatabaseMetaData::supportsExtendedSQLGrammar() -I- */
supportsExtendedSQLGrammar()1275 sal_Bool SAL_CALL ODatabaseMetaData::supportsExtendedSQLGrammar()
1276 throw(SQLException, RuntimeException)
1277 {
1278 return impl_getBoolMetaData("supportsExtendedSQLGrammar", &sql::DatabaseMetaData::supportsExtendedSQLGrammar);
1279 }
1280 /* }}} */
1281
1282
1283 /* {{{ ODatabaseMetaData::supportsCoreSQLGrammar() -I- */
supportsCoreSQLGrammar()1284 sal_Bool SAL_CALL ODatabaseMetaData::supportsCoreSQLGrammar()
1285 throw(SQLException, RuntimeException)
1286 {
1287 return impl_getBoolMetaData("supportsCoreSQLGrammar", &sql::DatabaseMetaData::supportsCoreSQLGrammar);
1288 }
1289 /* }}} */
1290
1291
1292 /* {{{ ODatabaseMetaData::supportsMinimumSQLGrammar() -I- */
supportsMinimumSQLGrammar()1293 sal_Bool SAL_CALL ODatabaseMetaData::supportsMinimumSQLGrammar()
1294 throw(SQLException, RuntimeException)
1295 {
1296 return impl_getBoolMetaData("supportsMinimumSQLGrammar", &sql::DatabaseMetaData::supportsMinimumSQLGrammar);
1297 }
1298 /* }}} */
1299
1300
1301 /* {{{ ODatabaseMetaData::supportsFullOuterJoins() -I- */
supportsFullOuterJoins()1302 sal_Bool SAL_CALL ODatabaseMetaData::supportsFullOuterJoins()
1303 throw(SQLException, RuntimeException)
1304 {
1305 return impl_getBoolMetaData("supportsFullOuterJoins", &sql::DatabaseMetaData::supportsFullOuterJoins);
1306 }
1307 /* }}} */
1308
1309
1310 /* {{{ ODatabaseMetaData::supportsLimitedOuterJoins() -I- */
supportsLimitedOuterJoins()1311 sal_Bool SAL_CALL ODatabaseMetaData::supportsLimitedOuterJoins()
1312 throw(SQLException, RuntimeException)
1313 {
1314 return impl_getBoolMetaData("supportsLimitedOuterJoins", &sql::DatabaseMetaData::supportsLimitedOuterJoins);
1315 }
1316 /* }}} */
1317
1318
1319 /* {{{ ODatabaseMetaData::getMaxColumnsInGroupBy() -I- */
getMaxColumnsInGroupBy()1320 sal_Int32 SAL_CALL ODatabaseMetaData::getMaxColumnsInGroupBy()
1321 throw(SQLException, RuntimeException)
1322 {
1323 return impl_getInt32MetaData("getMaxColumnsInGroupBy", &sql::DatabaseMetaData::getMaxColumnsInGroupBy);
1324 }
1325 /* }}} */
1326
1327
1328 /* {{{ ODatabaseMetaData::getMaxColumnsInOrderBy() -I- */
getMaxColumnsInOrderBy()1329 sal_Int32 SAL_CALL ODatabaseMetaData::getMaxColumnsInOrderBy()
1330 throw(SQLException, RuntimeException)
1331 {
1332 return impl_getInt32MetaData("getMaxColumnsInOrderBy", &sql::DatabaseMetaData::getMaxColumnsInOrderBy);
1333 }
1334 /* }}} */
1335
1336
1337 /* {{{ ODatabaseMetaData::getMaxColumnsInSelect() -I- */
getMaxColumnsInSelect()1338 sal_Int32 SAL_CALL ODatabaseMetaData::getMaxColumnsInSelect()
1339 throw(SQLException, RuntimeException)
1340 {
1341 return impl_getInt32MetaData("getMaxColumnsInSelect", &sql::DatabaseMetaData::getMaxColumnsInSelect);
1342 }
1343 /* }}} */
1344
1345
1346 /* {{{ ODatabaseMetaData::getMaxUserNameLength() -I- */
getMaxUserNameLength()1347 sal_Int32 SAL_CALL ODatabaseMetaData::getMaxUserNameLength()
1348 throw(SQLException, RuntimeException)
1349 {
1350 return impl_getInt32MetaData("getMaxUserNameLength", &sql::DatabaseMetaData::getMaxUserNameLength);
1351 }
1352 /* }}} */
1353
1354
1355 /* {{{ ODatabaseMetaData::supportsResultSetType() -I- */
supportsResultSetType(sal_Int32 setType)1356 sal_Bool SAL_CALL ODatabaseMetaData::supportsResultSetType(sal_Int32 setType)
1357 throw(SQLException, RuntimeException)
1358 {
1359 return impl_getRSTypeMetaData("supportsResultSetType", &sql::DatabaseMetaData::supportsResultSetType, setType);
1360 }
1361 /* }}} */
1362
1363
1364 /* {{{ ODatabaseMetaData::supportsResultSetConcurrency() -I- */
supportsResultSetConcurrency(sal_Int32 setType,sal_Int32 concurrency)1365 sal_Bool SAL_CALL ODatabaseMetaData::supportsResultSetConcurrency(sal_Int32 setType, sal_Int32 concurrency)
1366 throw(SQLException, RuntimeException)
1367 {
1368 OSL_TRACE("ODatabaseMetaData::supportsResultSetConcurrency");
1369 /* TODO: Check this out */
1370 try {
1371 return meta->supportsResultSetConcurrency(setType, concurrency==com::sun::star::sdbc::TransactionIsolation::READ_COMMITTED?
1372 sql::TRANSACTION_READ_COMMITTED:
1373 (concurrency == com::sun::star::sdbc::TransactionIsolation::SERIALIZABLE?
1374 sql::TRANSACTION_SERIALIZABLE:sql::TRANSACTION_SERIALIZABLE))? sal_True:sal_False;
1375 } catch (sql::MethodNotImplementedException) {
1376 mysqlc_sdbc_driver::throwFeatureNotImplementedException("ODatabaseMetaData::supportsResultSetConcurrency", *this);
1377 } catch (sql::InvalidArgumentException) {
1378 mysqlc_sdbc_driver::throwInvalidArgumentException("ODatabaseMetaData::supportsResultSetConcurrency", *this);
1379 } catch (const sql::SQLException& e) {
1380 mysqlc_sdbc_driver::translateAndThrow(e, *this, m_rConnection.getConnectionEncoding());
1381 }
1382 return sal_False;
1383 }
1384 /* }}} */
1385
1386
1387 /* {{{ ODatabaseMetaData::ownUpdatesAreVisible() -I- */
ownUpdatesAreVisible(sal_Int32 setType)1388 sal_Bool SAL_CALL ODatabaseMetaData::ownUpdatesAreVisible(sal_Int32 setType)
1389 throw(SQLException, RuntimeException)
1390 {
1391 return impl_getRSTypeMetaData("ownUpdatesAreVisible", &sql::DatabaseMetaData::ownUpdatesAreVisible, setType);
1392 }
1393 /* }}} */
1394
1395
1396 /* {{{ ODatabaseMetaData::ownDeletesAreVisible() -I- */
ownDeletesAreVisible(sal_Int32 setType)1397 sal_Bool SAL_CALL ODatabaseMetaData::ownDeletesAreVisible(sal_Int32 setType)
1398 throw(SQLException, RuntimeException)
1399 {
1400 return impl_getRSTypeMetaData("ownDeletesAreVisible", &sql::DatabaseMetaData::ownDeletesAreVisible, setType);
1401 }
1402 /* }}} */
1403
1404
1405 /* {{{ ODatabaseMetaData::ownInsertsAreVisible() -I- */
ownInsertsAreVisible(sal_Int32 setType)1406 sal_Bool SAL_CALL ODatabaseMetaData::ownInsertsAreVisible(sal_Int32 setType)
1407 throw(SQLException, RuntimeException)
1408 {
1409 return impl_getRSTypeMetaData("ownInsertsAreVisible", &sql::DatabaseMetaData::ownInsertsAreVisible, setType);
1410 }
1411 /* }}} */
1412
1413
1414 /* {{{ ODatabaseMetaData::othersUpdatesAreVisible() -I- */
othersUpdatesAreVisible(sal_Int32 setType)1415 sal_Bool SAL_CALL ODatabaseMetaData::othersUpdatesAreVisible(sal_Int32 setType)
1416 throw(SQLException, RuntimeException)
1417 {
1418 return impl_getRSTypeMetaData("othersUpdatesAreVisible", &sql::DatabaseMetaData::othersUpdatesAreVisible, setType);
1419 }
1420 /* }}} */
1421
1422
1423 /* {{{ ODatabaseMetaData::othersDeletesAreVisible() -I- */
othersDeletesAreVisible(sal_Int32 setType)1424 sal_Bool SAL_CALL ODatabaseMetaData::othersDeletesAreVisible(sal_Int32 setType)
1425 throw(SQLException, RuntimeException)
1426 {
1427 return impl_getRSTypeMetaData("othersDeletesAreVisible", &sql::DatabaseMetaData::othersDeletesAreVisible, setType);
1428 }
1429 /* }}} */
1430
1431
1432 /* {{{ ODatabaseMetaData::othersInsertsAreVisible() -I- */
othersInsertsAreVisible(sal_Int32 setType)1433 sal_Bool SAL_CALL ODatabaseMetaData::othersInsertsAreVisible(sal_Int32 setType)
1434 throw(SQLException, RuntimeException)
1435 {
1436 return impl_getRSTypeMetaData("othersInsertsAreVisible", &sql::DatabaseMetaData::othersInsertsAreVisible, setType);
1437 }
1438 /* }}} */
1439
1440
1441 /* {{{ ODatabaseMetaData::updatesAreDetected() -I- */
updatesAreDetected(sal_Int32 setType)1442 sal_Bool SAL_CALL ODatabaseMetaData::updatesAreDetected(sal_Int32 setType)
1443 throw(SQLException, RuntimeException)
1444 {
1445 return impl_getRSTypeMetaData("updatesAreDetected", &sql::DatabaseMetaData::updatesAreDetected, setType);
1446 }
1447 /* }}} */
1448
1449
1450 /* {{{ ODatabaseMetaData::deletesAreDetected() -I- */
deletesAreDetected(sal_Int32 setType)1451 sal_Bool SAL_CALL ODatabaseMetaData::deletesAreDetected(sal_Int32 setType)
1452 throw(SQLException, RuntimeException)
1453 {
1454 return impl_getRSTypeMetaData("deletesAreDetected", &sql::DatabaseMetaData::deletesAreDetected, setType);
1455 }
1456 /* }}} */
1457
1458
1459 /* {{{ ODatabaseMetaData::insertsAreDetected() -I- */
insertsAreDetected(sal_Int32 setType)1460 sal_Bool SAL_CALL ODatabaseMetaData::insertsAreDetected(sal_Int32 setType)
1461 throw(SQLException, RuntimeException)
1462 {
1463 return impl_getRSTypeMetaData("insertsAreDetected", &sql::DatabaseMetaData::insertsAreDetected, setType);
1464 }
1465 /* }}} */
1466
1467
1468 /* {{{ ODatabaseMetaData::supportsBatchUpdates() -I- */
supportsBatchUpdates()1469 sal_Bool SAL_CALL ODatabaseMetaData::supportsBatchUpdates()
1470 throw(SQLException, RuntimeException)
1471 {
1472 return impl_getBoolMetaData("supportsBatchUpdates", &sql::DatabaseMetaData::supportsBatchUpdates);
1473 }
1474 /* }}} */
1475
1476
1477 /* {{{ ODatabaseMetaData::getConnection() -I- */
getConnection()1478 Reference< XConnection > SAL_CALL ODatabaseMetaData::getConnection()
1479 throw(SQLException, RuntimeException)
1480 {
1481 OSL_TRACE("ODatabaseMetaData::getConnection");
1482 return (Reference< XConnection >)&m_rConnection;
1483 }
1484 /* }}} */
1485
1486
1487 /*
1488 Here follow all methods which return(a resultset
1489 the first methods is an example implementation how to use this resultset
1490 of course you could implement it on your and you should do this because
1491 the general way is more memory expensive
1492 */
1493
1494 /* {{{ ODatabaseMetaData::getTableTypes() -I- */
getTableTypes()1495 Reference< XResultSet > SAL_CALL ODatabaseMetaData::getTableTypes()
1496 throw(SQLException, RuntimeException)
1497 {
1498 OSL_TRACE("ODatabaseMetaData::getTableTypes");
1499 const char * table_types[] = {"TABLE", "VIEW"};
1500 sal_Int32 requiredVersion[] = {0, 50000};
1501
1502 Reference< XResultSet > xResultSet(getOwnConnection().getDriver().getFactory()->createInstance(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("org.openoffice.comp.helper.DatabaseMetaDataResultSet"))),UNO_QUERY);
1503 std::vector< std::vector< Any > > rRows;
1504 rtl_TextEncoding encoding = m_rConnection.getConnectionEncoding();
1505
1506 for (sal_uInt32 i = 0; i < 2; i++) {
1507 if (m_rConnection.getMysqlVersion() >= requiredVersion[i]) {
1508 std::vector< Any > aRow(1);
1509 aRow.push_back(makeAny(mysqlc_sdbc_driver::convert(table_types[i], encoding)));
1510 rRows.push_back(aRow);
1511 }
1512 }
1513 lcl_setRows_throw(xResultSet, 5 ,rRows);
1514 return xResultSet;
1515 }
1516 /* }}} */
1517
1518
1519 /* {{{ ODatabaseMetaData::getTypeInfo() -I- */
getTypeInfo()1520 Reference< XResultSet > SAL_CALL ODatabaseMetaData::getTypeInfo()
1521 throw(SQLException, RuntimeException)
1522 {
1523 OSL_TRACE("ODatabaseMetaData::getTypeInfo");
1524 Reference< XResultSet > xResultSet(getOwnConnection().getDriver().getFactory()->createInstance(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("org.openoffice.comp.helper.DatabaseMetaDataResultSet"))),UNO_QUERY);
1525
1526 std::vector< std::vector< Any > > rRows;
1527
1528 rtl_TextEncoding encoding = m_rConnection.getConnectionEncoding();
1529 unsigned int i = 0;
1530 while (mysqlc_types[i].typeName) {
1531 std::vector< Any > aRow(1);
1532
1533 aRow.push_back(makeAny(mysqlc_sdbc_driver::convert(mysqlc_types[i].typeName, encoding)));
1534 aRow.push_back(makeAny(mysqlc_types[i].dataType));
1535 aRow.push_back(makeAny(mysqlc_types[i].precision));
1536 aRow.push_back(makeAny(mysqlc_sdbc_driver::convert(mysqlc_types[i].literalPrefix, encoding)));
1537 aRow.push_back(makeAny(mysqlc_sdbc_driver::convert(mysqlc_types[i].literalSuffix, encoding)));
1538 aRow.push_back(makeAny(mysqlc_sdbc_driver::convert(mysqlc_types[i].createParams, encoding)));
1539 aRow.push_back(makeAny(mysqlc_types[i].nullable));
1540 aRow.push_back(makeAny(mysqlc_types[i].caseSensitive));
1541 aRow.push_back(makeAny(mysqlc_types[i].searchable));
1542 aRow.push_back(makeAny(mysqlc_types[i].isUnsigned));
1543 aRow.push_back(makeAny(mysqlc_types[i].fixedPrecScale));
1544 aRow.push_back(makeAny(mysqlc_types[i].autoIncrement));
1545 aRow.push_back(makeAny(mysqlc_sdbc_driver::convert(mysqlc_types[i].localTypeName, encoding)));
1546 aRow.push_back(makeAny(mysqlc_types[i].minScale));
1547 aRow.push_back(makeAny(mysqlc_types[i].maxScale));
1548 aRow.push_back(makeAny(sal_Int32(0)));
1549 aRow.push_back(makeAny(sal_Int32(0)));
1550 aRow.push_back(makeAny(sal_Int32(10)));
1551
1552 rRows.push_back(aRow);
1553 i++;
1554 }
1555
1556 lcl_setRows_throw(xResultSet, 14, rRows);
1557 return xResultSet;
1558 }
1559 /* }}} */
1560
1561
1562 /* {{{ ODatabaseMetaData::getCatalogs() -I- */
getCatalogs()1563 Reference< XResultSet > SAL_CALL ODatabaseMetaData::getCatalogs()
1564 throw(SQLException, RuntimeException)
1565 {
1566 OSL_TRACE("ODatabaseMetaData::getCatalogs");
1567
1568 Reference< XResultSet > xResultSet(getOwnConnection().getDriver().getFactory()->createInstance(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("org.openoffice.comp.helper.DatabaseMetaDataResultSet"))),UNO_QUERY);
1569 std::vector< std::vector< Any > > rRows;
1570
1571 try {
1572 rtl_TextEncoding encoding = m_rConnection.getConnectionEncoding();
1573 std::auto_ptr< sql::ResultSet> rset( meta->getCatalogs());
1574 sql::ResultSetMetaData * rs_meta = rset->getMetaData();
1575 sal_uInt32 columns = rs_meta->getColumnCount();
1576 while (rset->next()) {
1577 std::vector< Any > aRow(1);
1578 for (sal_uInt32 i = 1; i <= columns; i++) {
1579 aRow.push_back(makeAny(mysqlc_sdbc_driver::convert(rset->getString(i), encoding)));
1580 }
1581 rRows.push_back(aRow);
1582 }
1583 } catch (sql::MethodNotImplementedException) {
1584 mysqlc_sdbc_driver::throwFeatureNotImplementedException("ODatabaseMetaData::getCatalogs", *this);
1585 } catch (sql::InvalidArgumentException) {
1586 mysqlc_sdbc_driver::throwInvalidArgumentException("ODatabaseMetaData::getCatalogs", *this);
1587 } catch (const sql::SQLException& e) {
1588 mysqlc_sdbc_driver::translateAndThrow(e, *this, m_rConnection.getConnectionEncoding());
1589 }
1590
1591 lcl_setRows_throw(xResultSet, 0, rRows);
1592 return xResultSet;
1593 }
1594 /* }}} */
1595
1596
1597 /* {{{ ODatabaseMetaData::getSchemas() -I- */
getSchemas()1598 Reference< XResultSet > SAL_CALL ODatabaseMetaData::getSchemas()
1599 throw(SQLException, RuntimeException)
1600 {
1601 OSL_TRACE("ODatabaseMetaData::getSchemas");
1602
1603 Reference< XResultSet > xResultSet(getOwnConnection().getDriver().getFactory()->createInstance(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("org.openoffice.comp.helper.DatabaseMetaDataResultSet"))),UNO_QUERY);
1604 std::vector< std::vector< Any > > rRows;
1605
1606 try {
1607 rtl_TextEncoding encoding = m_rConnection.getConnectionEncoding();
1608 std::auto_ptr< sql::ResultSet> rset( meta->getSchemas());
1609 sql::ResultSetMetaData * rs_meta = rset->getMetaData();
1610 sal_uInt32 columns = rs_meta->getColumnCount();
1611 while (rset->next()) {
1612 std::vector< Any > aRow(1);
1613 bool informationSchema = false;
1614 for (sal_uInt32 i = 1; i <= columns; i++) {
1615 sql::SQLString columnStringValue = rset->getString(i);
1616 if (i == 1) { // TABLE_SCHEM
1617 informationSchema = (0 == columnStringValue.compare("information_schema"));
1618 }
1619 aRow.push_back(makeAny(mysqlc_sdbc_driver::convert(columnStringValue, encoding)));
1620 }
1621 if (!informationSchema ) {
1622 rRows.push_back(aRow);
1623 }
1624 }
1625 } catch (sql::MethodNotImplementedException) {
1626 mysqlc_sdbc_driver::throwFeatureNotImplementedException("ODatabaseMetaData::getSchemas", *this);
1627 } catch (sql::InvalidArgumentException) {
1628 mysqlc_sdbc_driver::throwInvalidArgumentException("ODatabaseMetaData::getSchemas", *this);
1629 } catch (const sql::SQLException& e) {
1630 mysqlc_sdbc_driver::translateAndThrow(e, *this, m_rConnection.getConnectionEncoding());
1631 }
1632
1633 lcl_setRows_throw(xResultSet, 1, rRows);
1634 return xResultSet;
1635 }
1636 /* }}} */
1637
1638
1639 /* {{{ ODatabaseMetaData::getColumnPrivileges() -I- */
getColumnPrivileges(const Any & catalog,const OUString & schema,const OUString & table,const OUString & columnNamePattern)1640 Reference< XResultSet > SAL_CALL ODatabaseMetaData::getColumnPrivileges(
1641 const Any& catalog,
1642 const OUString& schema,
1643 const OUString& table,
1644 const OUString& columnNamePattern)
1645 throw(SQLException, RuntimeException)
1646 {
1647 OSL_TRACE("ODatabaseMetaData::getColumnPrivileges");
1648 Reference< XResultSet > xResultSet(getOwnConnection().getDriver().getFactory()->createInstance(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("org.openoffice.comp.helper.DatabaseMetaDataResultSet"))),UNO_QUERY);
1649 std::vector< std::vector< Any > > rRows;
1650
1651 ext_std::string cat(catalog.hasValue()? OUStringToOString(getStringFromAny(catalog), m_rConnection.getConnectionEncoding()).getStr():""),
1652 sch(OUStringToOString(schema, m_rConnection.getConnectionEncoding()).getStr()),
1653 tab(OUStringToOString(table, m_rConnection.getConnectionEncoding()).getStr()),
1654 cNamePattern(OUStringToOString(columnNamePattern, m_rConnection.getConnectionEncoding()).getStr());
1655 try {
1656 rtl_TextEncoding encoding = m_rConnection.getConnectionEncoding();
1657 std::auto_ptr< sql::ResultSet> rset( meta->getColumnPrivileges(cat, sch, tab, cNamePattern.compare("")? cNamePattern:wild));
1658
1659 sql::ResultSetMetaData * rs_meta = rset->getMetaData();
1660 sal_uInt32 columns = rs_meta->getColumnCount();
1661 while (rset->next()) {
1662 std::vector< Any > aRow(1);
1663 for (sal_uInt32 i = 1; i <= columns; i++) {
1664 aRow.push_back(makeAny(mysqlc_sdbc_driver::convert(rset->getString(i), encoding)));
1665 }
1666 rRows.push_back(aRow);
1667 }
1668 } catch (sql::MethodNotImplementedException) {
1669 mysqlc_sdbc_driver::throwFeatureNotImplementedException("ODatabaseMetaData::getColumnPrivileges", *this);
1670 } catch (sql::InvalidArgumentException) {
1671 mysqlc_sdbc_driver::throwInvalidArgumentException("ODatabaseMetaData::getColumnPrivileges", *this);
1672 } catch (const sql::SQLException& e) {
1673 mysqlc_sdbc_driver::translateAndThrow(e, *this, m_rConnection.getConnectionEncoding());
1674 }
1675
1676 lcl_setRows_throw(xResultSet, 2, rRows);
1677 return xResultSet;
1678 }
1679 /* }}} */
1680
1681
1682 /* {{{ ODatabaseMetaData::getColumns() -I- */
getColumns(const Any & catalog,const OUString & schemaPattern,const OUString & tableNamePattern,const OUString & columnNamePattern)1683 Reference< XResultSet > SAL_CALL ODatabaseMetaData::getColumns(
1684 const Any& catalog,
1685 const OUString& schemaPattern,
1686 const OUString& tableNamePattern,
1687 const OUString& columnNamePattern)
1688 throw(SQLException, RuntimeException)
1689 {
1690 OSL_TRACE("ODatabaseMetaData::getColumns");
1691 Reference< XResultSet > xResultSet(getOwnConnection().getDriver().getFactory()->createInstance(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("org.openoffice.comp.helper.DatabaseMetaDataResultSet"))),UNO_QUERY);
1692 std::vector< std::vector< Any > > rRows;
1693 ext_std::string cat(catalog.hasValue()? OUStringToOString(getStringFromAny(catalog), m_rConnection.getConnectionEncoding()).getStr():""),
1694 sPattern(OUStringToOString(schemaPattern, m_rConnection.getConnectionEncoding()).getStr()),
1695 tNamePattern(OUStringToOString(tableNamePattern, m_rConnection.getConnectionEncoding()).getStr()),
1696 cNamePattern(OUStringToOString(columnNamePattern, m_rConnection.getConnectionEncoding()).getStr());
1697
1698 try {
1699 std::auto_ptr< sql::ResultSet> rset( meta->getColumns(cat,
1700 sPattern.compare("")? sPattern:wild,
1701 tNamePattern.compare("")? tNamePattern:wild,
1702 cNamePattern.compare("")? cNamePattern:wild));
1703 rtl_TextEncoding encoding = m_rConnection.getConnectionEncoding();
1704 sql::ResultSetMetaData * rs_meta = rset->getMetaData();
1705 sal_uInt32 columns = rs_meta->getColumnCount();
1706 while (rset->next()) {
1707 std::vector< Any > aRow(1);
1708 for (sal_uInt32 i = 1; i <= columns; i++) {
1709 if (i == 5) { // ColumnType
1710 sal_Int32 sdbc_type = mysqlc_sdbc_driver::mysqlToOOOType(atoi(rset->getString(i).c_str()));
1711 aRow.push_back(makeAny(sdbc_type));
1712 } else {
1713 aRow.push_back(makeAny(mysqlc_sdbc_driver::convert(rset->getString(i), encoding)));
1714 }
1715 }
1716 rRows.push_back(aRow);
1717 }
1718 } catch (sql::MethodNotImplementedException) {
1719 mysqlc_sdbc_driver::throwFeatureNotImplementedException("ODatabaseMetaData::getColumns", *this);
1720 } catch (sql::InvalidArgumentException) {
1721 mysqlc_sdbc_driver::throwInvalidArgumentException("ODatabaseMetaData::getColumns", *this);
1722 } catch (const sql::SQLException& e) {
1723 mysqlc_sdbc_driver::translateAndThrow(e, *this, m_rConnection.getConnectionEncoding());
1724 }
1725 lcl_setRows_throw(xResultSet, 3, rRows);
1726 return xResultSet;
1727 }
1728 /* }}} */
1729
1730
1731 /* {{{ ODatabaseMetaData::getTables() -I- */
getTables(const Any & catalog,const OUString & schemaPattern,const OUString & tableNamePattern,const Sequence<OUString> & types)1732 Reference< XResultSet > SAL_CALL ODatabaseMetaData::getTables(
1733 const Any& catalog,
1734 const OUString& schemaPattern,
1735 const OUString& tableNamePattern,
1736 const Sequence< OUString >& types )
1737 throw(SQLException, RuntimeException)
1738 {
1739 OSL_TRACE("ODatabaseMetaData::getTables");
1740 sal_Int32 nLength = types.getLength();
1741
1742 Reference< XResultSet > xResultSet(getOwnConnection().
1743 getDriver().getFactory()->createInstance(
1744 ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("org.openoffice.comp.helper.DatabaseMetaDataResultSet"))),UNO_QUERY);
1745 std::vector< std::vector< Any > > rRows;
1746
1747 ext_std::string cat(catalog.hasValue()? OUStringToOString(getStringFromAny(catalog), m_rConnection.getConnectionEncoding()).getStr():""),
1748 sPattern(OUStringToOString(schemaPattern, m_rConnection.getConnectionEncoding()).getStr()),
1749 tNamePattern(OUStringToOString(tableNamePattern, m_rConnection.getConnectionEncoding()).getStr());
1750
1751 ext_std::list<sql::SQLString> tabTypes;
1752 for (const OUString *pStart = types.getConstArray(), *p = pStart, *pEnd = pStart + nLength; p != pEnd; ++p) {
1753 tabTypes.push_back(OUStringToOString(*p, m_rConnection.getConnectionEncoding()).getStr());
1754 }
1755
1756 try {
1757 std::auto_ptr< sql::ResultSet> rset( meta->getTables(cat,
1758 sPattern.compare("")? sPattern:wild,
1759 tNamePattern.compare("")? tNamePattern:wild,
1760 tabTypes));
1761
1762 rtl_TextEncoding encoding = m_rConnection.getConnectionEncoding();
1763 sql::ResultSetMetaData * rs_meta = rset->getMetaData();
1764 sal_uInt32 columns = rs_meta->getColumnCount();
1765 while (rset->next()) {
1766 std::vector< Any > aRow(1);
1767 bool informationSchema = false;
1768 for (sal_uInt32 i = 1; (i <= columns) && !informationSchema; ++i) {
1769 sql::SQLString columnStringValue = rset->getString(i);
1770 if (i == 2) { // TABLE_SCHEM
1771 informationSchema = ( 0 == columnStringValue.compare("information_schema"));
1772 }
1773 aRow.push_back(makeAny(mysqlc_sdbc_driver::convert(columnStringValue, encoding)));
1774 }
1775 if (!informationSchema) {
1776 rRows.push_back(aRow);
1777 }
1778 }
1779 } catch (sql::MethodNotImplementedException) {
1780 mysqlc_sdbc_driver::throwFeatureNotImplementedException("ODatabaseMetaData::getTables", *this);
1781 } catch (sql::InvalidArgumentException) {
1782 mysqlc_sdbc_driver::throwInvalidArgumentException("ODatabaseMetaData::getTables", *this);
1783 } catch (const sql::SQLException& e) {
1784 mysqlc_sdbc_driver::translateAndThrow(e, *this, m_rConnection.getConnectionEncoding());
1785 }
1786
1787 lcl_setRows_throw(xResultSet, 4, rRows);
1788 return xResultSet;
1789 }
1790 /* }}} */
1791
1792
1793 /* {{{ ODatabaseMetaData::getProcedureColumns() -I- */
getProcedureColumns(const Any &,const OUString &,const OUString &,const OUString &)1794 Reference< XResultSet > SAL_CALL ODatabaseMetaData::getProcedureColumns(
1795 const Any& /* catalog */,
1796 const OUString& /* schemaPattern */,
1797 const OUString& /* procedureNamePattern */,
1798 const OUString& /* columnNamePattern */)
1799 throw(SQLException, RuntimeException)
1800 {
1801 OSL_TRACE("ODatabaseMetaData::getProcedureColumns");
1802 // Currently there is no information available
1803 return NULL;
1804 }
1805 /* }}} */
1806
1807
1808 /* {{{ ODatabaseMetaData::getProcedures() -I- */
getProcedures(const Any & catalog,const OUString & schemaPattern,const OUString & procedureNamePattern)1809 Reference< XResultSet > SAL_CALL ODatabaseMetaData::getProcedures(
1810 const Any& catalog,
1811 const OUString& schemaPattern,
1812 const OUString& procedureNamePattern)
1813 throw(SQLException, RuntimeException)
1814 {
1815 OSL_TRACE("ODatabaseMetaData::getProcedures");
1816 Reference< XResultSet > xResultSet(getOwnConnection().getDriver().getFactory()->createInstance(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("org.openoffice.comp.helper.DatabaseMetaDataResultSet"))),UNO_QUERY);
1817 std::vector< std::vector< Any > > rRows;
1818
1819 ext_std::string cat(catalog.hasValue()? OUStringToOString(getStringFromAny(catalog), m_rConnection.getConnectionEncoding()).getStr():""),
1820 sPattern(OUStringToOString(schemaPattern, m_rConnection.getConnectionEncoding()).getStr()),
1821 pNamePattern(OUStringToOString(procedureNamePattern, m_rConnection.getConnectionEncoding()).getStr());
1822
1823
1824 try {
1825 std::auto_ptr< sql::ResultSet> rset( meta->getProcedures(cat,
1826 sPattern.compare("")? sPattern:wild,
1827 pNamePattern.compare("")? pNamePattern:wild));
1828
1829 rtl_TextEncoding encoding = m_rConnection.getConnectionEncoding();
1830 sql::ResultSetMetaData * rs_meta = rset->getMetaData();
1831 sal_uInt32 columns = rs_meta->getColumnCount();
1832 while (rset->next()) {
1833 std::vector< Any > aRow(1);
1834 for (sal_uInt32 i = 1; i <= columns; i++) {
1835 aRow.push_back(makeAny(mysqlc_sdbc_driver::convert(rset->getString(i), encoding)));
1836 }
1837 rRows.push_back(aRow);
1838 }
1839 } catch (sql::MethodNotImplementedException) {
1840 mysqlc_sdbc_driver::throwFeatureNotImplementedException("ODatabaseMetaData::getProcedures", *this);
1841 } catch (sql::InvalidArgumentException) {
1842 mysqlc_sdbc_driver::throwInvalidArgumentException("ODatabaseMetaData::getProcedures", *this);
1843 } catch (const sql::SQLException& e) {
1844 mysqlc_sdbc_driver::translateAndThrow(e, *this, m_rConnection.getConnectionEncoding());
1845 }
1846
1847 lcl_setRows_throw(xResultSet, 7,rRows);
1848 return xResultSet;
1849 }
1850 /* }}} */
1851
1852
1853 /* {{{ ODatabaseMetaData::getVersionColumns() -I- */
getVersionColumns(const Any &,const OUString &,const OUString &)1854 Reference< XResultSet > SAL_CALL ODatabaseMetaData::getVersionColumns(
1855 const Any& /* catalog */,
1856 const OUString& /* schema */,
1857 const OUString& /* table */)
1858 throw(SQLException, RuntimeException)
1859 {
1860 OSL_TRACE("ODatabaseMetaData::getVersionColumns");
1861 Reference< XResultSet > xResultSet(getOwnConnection().getDriver().getFactory()->createInstance(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("org.openoffice.comp.helper.DatabaseMetaDataResultSet"))),UNO_QUERY);
1862 std::vector< std::vector< Any > > rRows;
1863 lcl_setRows_throw(xResultSet, 16,rRows);
1864 return xResultSet;
1865 }
1866 /* }}} */
1867
1868
1869 /* {{{ ODatabaseMetaData::getExportedKeys() -I- */
getExportedKeys(const Any & catalog,const OUString & schema,const OUString & table)1870 Reference< XResultSet > SAL_CALL ODatabaseMetaData::getExportedKeys(
1871 const Any& catalog ,
1872 const OUString& schema ,
1873 const OUString& table )
1874 throw(SQLException, RuntimeException)
1875 {
1876 OSL_TRACE("ODatabaseMetaData::getExportedKeys");
1877 Reference< XResultSet > xResultSet(getOwnConnection().getDriver().getFactory()->createInstance(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("org.openoffice.comp.helper.DatabaseMetaDataResultSet"))),UNO_QUERY);
1878 std::vector< std::vector< Any > > rRows;
1879 ext_std::string cat(catalog.hasValue()? OUStringToOString(getStringFromAny(catalog), m_rConnection.getConnectionEncoding()).getStr():""),
1880 sch(OUStringToOString(schema, m_rConnection.getConnectionEncoding()).getStr()),
1881 tab(OUStringToOString(table, m_rConnection.getConnectionEncoding()).getStr());
1882
1883 try {
1884 rtl_TextEncoding encoding = m_rConnection.getConnectionEncoding();
1885 std::auto_ptr< sql::ResultSet> rset( meta->getExportedKeys(cat, sch, tab));
1886 sql::ResultSetMetaData * rs_meta = rset->getMetaData();
1887 sal_uInt32 columns = rs_meta->getColumnCount();
1888 while (rset->next()) {
1889 std::vector< Any > aRow(1);
1890 for (sal_uInt32 i = 1; i <= columns; i++) {
1891 aRow.push_back(makeAny(mysqlc_sdbc_driver::convert(rset->getString(i), encoding)));
1892 }
1893 rRows.push_back(aRow);
1894 }
1895 } catch (sql::MethodNotImplementedException) {
1896 mysqlc_sdbc_driver::throwFeatureNotImplementedException("ODatabaseMetaData::getExportedKeys", *this);
1897 } catch (sql::InvalidArgumentException) {
1898 mysqlc_sdbc_driver::throwInvalidArgumentException("ODatabaseMetaData::getExportedKeys", *this);
1899 } catch (const sql::SQLException& e) {
1900 mysqlc_sdbc_driver::translateAndThrow(e, *this, m_rConnection.getConnectionEncoding());
1901 }
1902
1903 lcl_setRows_throw(xResultSet, 8, rRows);
1904 return xResultSet;
1905 }
1906 /* }}} */
1907
1908
1909 /* {{{ ODatabaseMetaData::getImportedKeys() -I- */
getImportedKeys(const Any & catalog,const OUString & schema,const OUString & table)1910 Reference< XResultSet > SAL_CALL ODatabaseMetaData::getImportedKeys(
1911 const Any& catalog,
1912 const OUString& schema,
1913 const OUString& table)
1914 throw(SQLException, RuntimeException)
1915 {
1916 OSL_TRACE("ODatabaseMetaData::getImportedKeys");
1917
1918 Reference< XResultSet > xResultSet(getOwnConnection().getDriver().getFactory()->createInstance(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("org.openoffice.comp.helper.DatabaseMetaDataResultSet"))),UNO_QUERY);
1919 std::vector< std::vector< Any > > rRows;
1920
1921 ext_std::string cat(catalog.hasValue()? OUStringToOString(getStringFromAny(catalog), m_rConnection.getConnectionEncoding()).getStr():""),
1922 sch(OUStringToOString(schema, m_rConnection.getConnectionEncoding()).getStr()),
1923 tab(OUStringToOString(table, m_rConnection.getConnectionEncoding()).getStr());
1924
1925 try {
1926 rtl_TextEncoding encoding = m_rConnection.getConnectionEncoding();
1927 std::auto_ptr< sql::ResultSet> rset( meta->getImportedKeys(cat, sch, tab));
1928 sql::ResultSetMetaData * rs_meta = rset->getMetaData();
1929 sal_uInt32 columns = rs_meta->getColumnCount();
1930 while (rset->next()) {
1931 std::vector< Any > aRow(1);
1932 for (sal_uInt32 i = 1; i <= columns; i++) {
1933 aRow.push_back(makeAny(mysqlc_sdbc_driver::convert(rset->getString(i), encoding)));
1934 }
1935 rRows.push_back(aRow);
1936 }
1937 } catch (sql::MethodNotImplementedException) {
1938 mysqlc_sdbc_driver::throwFeatureNotImplementedException("ODatabaseMetaData::getImportedKeys", *this);
1939 } catch (sql::InvalidArgumentException) {
1940 mysqlc_sdbc_driver::throwInvalidArgumentException("ODatabaseMetaData::getImportedKeys", *this);
1941 } catch (const sql::SQLException& e) {
1942 mysqlc_sdbc_driver::translateAndThrow(e, *this, m_rConnection.getConnectionEncoding());
1943 }
1944
1945 lcl_setRows_throw(xResultSet,9,rRows);
1946 return xResultSet;
1947 }
1948 /* }}} */
1949
1950
1951 /* {{{ ODatabaseMetaData::getPrimaryKeys() -I- */
getPrimaryKeys(const Any & catalog,const OUString & schema,const OUString & table)1952 Reference< XResultSet > SAL_CALL ODatabaseMetaData::getPrimaryKeys(
1953 const Any& catalog,
1954 const OUString& schema,
1955 const OUString& table)
1956 throw(SQLException, RuntimeException)
1957 {
1958 OSL_TRACE("ODatabaseMetaData::getPrimaryKeys");
1959 Reference< XResultSet > xResultSet(getOwnConnection().getDriver().getFactory()->createInstance(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("org.openoffice.comp.helper.DatabaseMetaDataResultSet"))),UNO_QUERY);
1960 std::vector< std::vector< Any > > rRows;
1961
1962 ext_std::string cat(catalog.hasValue()? OUStringToOString(getStringFromAny(catalog), m_rConnection.getConnectionEncoding()).getStr():""),
1963 sch(OUStringToOString(schema, m_rConnection.getConnectionEncoding()).getStr()),
1964 tab(OUStringToOString(table, m_rConnection.getConnectionEncoding()).getStr());
1965
1966 try {
1967 rtl_TextEncoding encoding = m_rConnection.getConnectionEncoding();
1968 std::auto_ptr< sql::ResultSet> rset( meta->getPrimaryKeys(cat, sch, tab));
1969 sql::ResultSetMetaData * rs_meta = rset->getMetaData();
1970 sal_uInt32 columns = rs_meta->getColumnCount();
1971 while (rset->next()) {
1972 std::vector< Any > aRow(1);
1973 for (sal_uInt32 i = 1; i <= columns; i++) {
1974 aRow.push_back(makeAny(mysqlc_sdbc_driver::convert(rset->getString(i), encoding)));
1975 }
1976 rRows.push_back(aRow);
1977 }
1978 } catch (sql::MethodNotImplementedException) {
1979 mysqlc_sdbc_driver::throwFeatureNotImplementedException("ODatabaseMetaData::getPrimaryKeys", *this);
1980 } catch (sql::InvalidArgumentException) {
1981 mysqlc_sdbc_driver::throwInvalidArgumentException("ODatabaseMetaData::getPrimaryKeys", *this);
1982 } catch (const sql::SQLException& e) {
1983 mysqlc_sdbc_driver::translateAndThrow(e, *this, m_rConnection.getConnectionEncoding());
1984 }
1985
1986 lcl_setRows_throw(xResultSet, 10, rRows);
1987 return xResultSet;
1988 }
1989 /* }}} */
1990
1991
1992 /* {{{ ODatabaseMetaData::getIndexInfo() -I- */
getIndexInfo(const Any & catalog,const OUString & schema,const OUString & table,sal_Bool unique,sal_Bool approximate)1993 Reference< XResultSet > SAL_CALL ODatabaseMetaData::getIndexInfo(
1994 const Any& catalog,
1995 const OUString& schema,
1996 const OUString& table,
1997 sal_Bool unique,
1998 sal_Bool approximate)
1999 throw(SQLException, RuntimeException)
2000 {
2001 OSL_TRACE("ODatabaseMetaData::getIndexInfo");
2002 Reference< XResultSet > xResultSet(getOwnConnection().getDriver().getFactory()->createInstance(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("org.openoffice.comp.helper.DatabaseMetaDataResultSet"))),UNO_QUERY);
2003 std::vector< std::vector< Any > > rRows;
2004
2005 ext_std::string cat(catalog.hasValue()? OUStringToOString(getStringFromAny(catalog), m_rConnection.getConnectionEncoding()).getStr():""),
2006 sch(OUStringToOString(schema, m_rConnection.getConnectionEncoding()).getStr()),
2007 tab(OUStringToOString(table, m_rConnection.getConnectionEncoding()).getStr());
2008
2009 try {
2010 rtl_TextEncoding encoding = m_rConnection.getConnectionEncoding();
2011 std::auto_ptr< sql::ResultSet> rset( meta->getIndexInfo(cat, sch, tab, unique, approximate));
2012 sql::ResultSetMetaData * rs_meta = rset->getMetaData();
2013 sal_uInt32 columns = rs_meta->getColumnCount();
2014 while (rset->next()) {
2015 std::vector< Any > aRow(1);
2016 for (sal_uInt32 i = 1; i <= columns; i++) {
2017 aRow.push_back(makeAny(mysqlc_sdbc_driver::convert(rset->getString(i), encoding)));
2018 }
2019 rRows.push_back(aRow);
2020 }
2021 } catch (sql::MethodNotImplementedException) {
2022 mysqlc_sdbc_driver::throwFeatureNotImplementedException("ODatabaseMetaData::getIndexInfo", *this);
2023 } catch (sql::InvalidArgumentException) {
2024 mysqlc_sdbc_driver::throwInvalidArgumentException("ODatabaseMetaData::getIndexInfo", *this);
2025 } catch (const sql::SQLException& e) {
2026 mysqlc_sdbc_driver::translateAndThrow(e, *this, m_rConnection.getConnectionEncoding());
2027 }
2028
2029 lcl_setRows_throw(xResultSet, 11, rRows);
2030 return xResultSet;
2031 }
2032 /* }}} */
2033
2034
2035 /* {{{ ODatabaseMetaData::getBestRowIdentifier() -I- */
getBestRowIdentifier(const Any & catalog,const OUString & schema,const OUString & table,sal_Int32 scope,sal_Bool nullable)2036 Reference< XResultSet > SAL_CALL ODatabaseMetaData::getBestRowIdentifier(
2037 const Any& catalog,
2038 const OUString& schema,
2039 const OUString& table,
2040 sal_Int32 scope,
2041 sal_Bool nullable)
2042 throw(SQLException, RuntimeException)
2043 {
2044 OSL_TRACE("ODatabaseMetaData::getBestRowIdentifier");
2045 Reference< XResultSet > xResultSet(getOwnConnection().getDriver().getFactory()->createInstance(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("org.openoffice.comp.helper.DatabaseMetaDataResultSet"))),UNO_QUERY);
2046 std::vector< std::vector< Any > > rRows;
2047
2048 ext_std::string cat(catalog.hasValue()? OUStringToOString(getStringFromAny(catalog), m_rConnection.getConnectionEncoding()).getStr():""),
2049 sch(OUStringToOString(schema, m_rConnection.getConnectionEncoding()).getStr()),
2050 tab(OUStringToOString(table, m_rConnection.getConnectionEncoding()).getStr());
2051
2052 try {
2053 rtl_TextEncoding encoding = m_rConnection.getConnectionEncoding();
2054 std::auto_ptr< sql::ResultSet> rset( meta->getBestRowIdentifier(cat, sch, tab, scope, nullable));
2055 sql::ResultSetMetaData * rs_meta = rset->getMetaData();
2056 sal_uInt32 columns = rs_meta->getColumnCount();
2057 while (rset->next()) {
2058 std::vector< Any > aRow(1);
2059 for (sal_uInt32 i = 1; i <= columns; i++) {
2060 aRow.push_back(makeAny(mysqlc_sdbc_driver::convert(rset->getString(i), encoding)));
2061 }
2062 rRows.push_back(aRow);
2063 }
2064 } catch (sql::MethodNotImplementedException) {
2065 mysqlc_sdbc_driver::throwFeatureNotImplementedException("ODatabaseMetaData::getBestRowIdentifier", *this);
2066 } catch (sql::InvalidArgumentException) {
2067 mysqlc_sdbc_driver::throwInvalidArgumentException("ODatabaseMetaData::getBestRowIdentifier", *this);
2068 } catch (const sql::SQLException& e) {
2069 mysqlc_sdbc_driver::translateAndThrow(e, *this, m_rConnection.getConnectionEncoding());
2070 }
2071
2072 lcl_setRows_throw(xResultSet, 15, rRows);
2073 return xResultSet;
2074 }
2075 /* }}} */
2076
2077
2078 /* {{{ ODatabaseMetaData::getTablePrivileges() -I- */
getTablePrivileges(const Any & catalog,const OUString & schemaPattern,const OUString & tableNamePattern)2079 Reference< XResultSet > SAL_CALL ODatabaseMetaData::getTablePrivileges(
2080 const Any& catalog,
2081 const OUString& schemaPattern,
2082 const OUString& tableNamePattern)
2083 throw(SQLException, RuntimeException)
2084 {
2085 OSL_TRACE("ODatabaseMetaData::getTablePrivileges");
2086 Reference< XResultSet > xResultSet(getOwnConnection().getDriver().getFactory()->createInstance(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("org.openoffice.comp.helper.DatabaseMetaDataResultSet"))),UNO_QUERY);
2087 std::vector< std::vector< Any > > rRows;
2088
2089 ext_std::string cat(catalog.hasValue()? OUStringToOString(getStringFromAny(catalog), m_rConnection.getConnectionEncoding()).getStr():""),
2090 sPattern(OUStringToOString(schemaPattern, m_rConnection.getConnectionEncoding()).getStr()),
2091 tPattern(OUStringToOString(tableNamePattern, m_rConnection.getConnectionEncoding()).getStr());
2092
2093 try {
2094 static bool fakeTablePrivileges = false;
2095 if (fakeTablePrivileges) {
2096 static const sal_Char* allPrivileges[] = {
2097 "ALTER", "DELETE", "DROP", "INDEX", "INSERT", "LOCK TABLES", "SELECT", "UPDATE"
2098 };
2099 Any userName; userName <<= getUserName();
2100 for (size_t i = 0; i < sizeof( allPrivileges ) / sizeof( allPrivileges[0]); ++i) {
2101 std::vector< Any > aRow;
2102 aRow.push_back(makeAny( sal_Int32( i ) ));
2103 aRow.push_back(catalog); // TABLE_CAT
2104 aRow.push_back(makeAny( schemaPattern )); // TABLE_SCHEM
2105 aRow.push_back(makeAny( tableNamePattern )); // TABLE_NAME
2106 aRow.push_back(Any()); // GRANTOR
2107 aRow.push_back(userName); // GRANTEE
2108 aRow.push_back(makeAny( ::rtl::OUString::createFromAscii( allPrivileges[i] ) )); // PRIVILEGE
2109 aRow.push_back(Any()); // IS_GRANTABLE
2110
2111 rRows.push_back(aRow);
2112 }
2113 } else {
2114 rtl_TextEncoding encoding = m_rConnection.getConnectionEncoding();
2115 std::auto_ptr< sql::ResultSet> rset( meta->getTablePrivileges(cat, sPattern.compare("")? sPattern:wild, tPattern.compare("")? tPattern:wild));
2116 sql::ResultSetMetaData * rs_meta = rset->getMetaData();
2117 sal_uInt32 columns = rs_meta->getColumnCount();
2118 while (rset->next()) {
2119 std::vector< Any > aRow(1);
2120 for (sal_uInt32 i = 1; i <= columns; i++) {
2121 aRow.push_back(makeAny(mysqlc_sdbc_driver::convert(rset->getString(i), encoding)));
2122 }
2123 rRows.push_back(aRow);
2124 }
2125 }
2126 } catch (sql::MethodNotImplementedException) {
2127 mysqlc_sdbc_driver::throwFeatureNotImplementedException("ODatabaseMetaData::getTablePrivileges", *this);
2128 } catch (sql::InvalidArgumentException) {
2129 mysqlc_sdbc_driver::throwInvalidArgumentException("ODatabaseMetaData::getTablePrivileges", *this);
2130 } catch (const sql::SQLException& e) {
2131 mysqlc_sdbc_driver::translateAndThrow(e, *this, m_rConnection.getConnectionEncoding());
2132 }
2133
2134 lcl_setRows_throw(xResultSet,12,rRows);
2135 return xResultSet;
2136 }
2137 /* }}} */
2138
2139
2140 /* {{{ ODatabaseMetaData::getCrossReference() -I- */
getCrossReference(const Any & primaryCatalog,const OUString & primarySchema,const OUString & primaryTable,const Any & foreignCatalog,const OUString & foreignSchema,const OUString & foreignTable)2141 Reference< XResultSet > SAL_CALL ODatabaseMetaData::getCrossReference(
2142 const Any& primaryCatalog,
2143 const OUString& primarySchema,
2144 const OUString& primaryTable,
2145 const Any& foreignCatalog,
2146 const OUString& foreignSchema,
2147 const OUString& foreignTable)
2148 throw(SQLException, RuntimeException)
2149 {
2150 OSL_TRACE("ODatabaseMetaData::getCrossReference");
2151 Reference< XResultSet > xResultSet(getOwnConnection().getDriver().getFactory()->createInstance(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("org.openoffice.comp.helper.DatabaseMetaDataResultSet"))),UNO_QUERY);
2152 std::vector< std::vector< Any > > rRows;
2153
2154 ext_std::string primaryCat(primaryCatalog.hasValue()? OUStringToOString(getStringFromAny(primaryCatalog), m_rConnection.getConnectionEncoding()).getStr():""),
2155 foreignCat(foreignCatalog.hasValue()? OUStringToOString(getStringFromAny(foreignCatalog), m_rConnection.getConnectionEncoding()).getStr():""),
2156 pSchema(OUStringToOString(primarySchema, m_rConnection.getConnectionEncoding()).getStr()),
2157 pTable(OUStringToOString(primaryTable, m_rConnection.getConnectionEncoding()).getStr()),
2158 fSchema(OUStringToOString(foreignSchema, m_rConnection.getConnectionEncoding()).getStr()),
2159 fTable(OUStringToOString(foreignTable, m_rConnection.getConnectionEncoding()).getStr());
2160
2161 try {
2162 rtl_TextEncoding encoding = m_rConnection.getConnectionEncoding();
2163 std::auto_ptr< sql::ResultSet> rset( meta->getCrossReference(primaryCat, pSchema, pTable, foreignCat, fSchema, fTable));
2164 sql::ResultSetMetaData * rs_meta = rset->getMetaData();
2165 sal_uInt32 columns = rs_meta->getColumnCount();
2166 while (rset->next()) {
2167 std::vector< Any > aRow(1);
2168 for (sal_uInt32 i = 1; i <= columns; i++) {
2169 aRow.push_back(makeAny(mysqlc_sdbc_driver::convert(rset->getString(i), encoding)));
2170 }
2171 rRows.push_back(aRow);
2172 }
2173 } catch (sql::MethodNotImplementedException) {
2174 mysqlc_sdbc_driver::throwFeatureNotImplementedException("ODatabaseMetaData::getCrossReference", *this);
2175 } catch (sql::InvalidArgumentException) {
2176 mysqlc_sdbc_driver::throwInvalidArgumentException("ODatabaseMetaData::getCrossReference", *this);
2177 } catch (const sql::SQLException& e) {
2178 mysqlc_sdbc_driver::translateAndThrow(e, *this, m_rConnection.getConnectionEncoding());
2179 }
2180
2181 lcl_setRows_throw(xResultSet,13,rRows);
2182 return xResultSet;
2183 }
2184 /* }}} */
2185
2186
2187 /* {{{ ODatabaseMetaData::getUDTs() -I- */
getUDTs(const Any &,const OUString &,const OUString &,const Sequence<sal_Int32> &)2188 Reference< XResultSet > SAL_CALL ODatabaseMetaData::getUDTs(
2189 const Any& /* catalog */,
2190 const OUString& /* schemaPattern */,
2191 const OUString& /* typeNamePattern */,
2192 const Sequence< sal_Int32 >& /* types */)
2193 throw(SQLException, RuntimeException)
2194 {
2195 OSL_TRACE("ODatabaseMetaData::getUDTs");
2196 mysqlc_sdbc_driver::throwFeatureNotImplementedException("ODatabaseMetaData::getUDTs", *this);
2197 return NULL;
2198 }
2199 /* }}} */
2200
2201 /*
2202 * Local variables:
2203 * tab-width: 4
2204 * c-basic-offset: 4
2205 * End:
2206 * vim600: noet sw=4 ts=4 fdm=marker
2207 * vim<600: noet sw=4 ts=4
2208 */
2209
2210