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