LibreOffice Module connectivity (master) 1
MacabDatabaseMetaData.cxx
Go to the documentation of this file.
1/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2/*
3 * This file is part of the LibreOffice project.
4 *
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 *
9 * This file incorporates work covered by the following license notice:
10 *
11 * Licensed to the Apache Software Foundation (ASF) under one or more
12 * contributor license agreements. See the NOTICE file distributed
13 * with this work for additional information regarding copyright
14 * ownership. The ASF licenses this file to you under the Apache
15 * License, Version 2.0 (the "License"); you may not use this file
16 * except in compliance with the License. You may obtain a copy of
17 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
18 */
19
20
22#include "MacabAddressBook.hxx"
23#include "MacabHeader.hxx"
24#include "MacabGroup.hxx"
25#include "macabutilities.hxx"
26
27#include "MacabDriver.hxx"
29#include <OTypeInfo.hxx>
30#include <com/sun/star/sdbc/ColumnSearch.hpp>
31#include <com/sun/star/sdbc/ColumnValue.hpp>
32#include <com/sun/star/sdbc/ResultSetType.hpp>
33#include <com/sun/star/sdbc/SQLException.hpp>
34#include <com/sun/star/sdbc/TransactionIsolation.hpp>
35#include <rtl/ref.hxx>
36
37#include <vector>
38
39using namespace connectivity::macab;
40using namespace com::sun::star::uno;
41using namespace com::sun::star::lang;
42using namespace com::sun::star::beans;
43using namespace com::sun::star::sdbc;
44
45MacabDatabaseMetaData::MacabDatabaseMetaData(MacabConnection* _pCon)
46 : m_xConnection(_pCon),
47 m_bUseCatalog(true)
48{
49 OSL_ENSURE(_pCon,"MacabDatabaseMetaData::MacabDatabaseMetaData: No connection set!");
50
51 osl_atomic_increment( &m_refCount );
53 osl_atomic_decrement( &m_refCount );
54}
55
57{
58}
59
61{
62 if (m_bUseCatalog)
63 { // do some special here for you database
64 }
65
66 return OUString();
67}
68
70{
71 return 0; // 0 means no limit
72}
73
75{
76 return 0; // 0 means no limit
77}
78
80{
81 return 0; // 0 means no limit
82}
83
85{
86 return 0; // 0 means no limit
87}
88
90{
91 return 0; // 0 means no limit
92}
93
95{
96 return 0; // 0 means no limit
97}
98
100{
101 return 0; // 0 means no limit
102}
103
105{
106 return 0; // 0 means no limit
107}
108
110{
111 return 0; // 0 means no limit
112}
113
115{
116 return 0; // 0 means no limit
117}
118
120{
121 return 0; // 0 means no limit
122}
123
125{
126 // MaxTablesInSelect describes how many tables can participate in the FROM part of a given SELECT statement,
127 // currently, the resultset/statement implementations can cope with one table only
128 return 1;
129}
130
132{
133 return false;
134}
135
137{
138 return false;
139}
140
142{
143 return false;
144}
145
147{
148 return false;
149}
150
152{
153 return false;
154}
155
157{
158 return false;
159}
160
162{
163 return false;
164}
165
167{
168 return false;
169}
170
172{
173 return false;
174}
175
177{
178 return 0; // 0 means no limit
179}
180
182{
183 return false;
184}
185
187{
188 return OUString();
189}
190
192{
193 // normally this is "
194 return "\"";
195}
196
198{
199 return OUString();
200}
201
203{
204 return false;
205}
206
208{
209 return false;
210}
211
213{
214 return true;
215}
216
218{
219 return true;
220}
221
223{
224 return true;
225}
226
228{
229 return true;
230}
231
233{
234 return false;
235}
236
238{
239 return false;
240}
241
243{
244 return false;
245}
246
248{
249 return false;
250}
251
253{
254 return false;
255}
256
258{
259 return false;
260}
261
263{
264 return false;
265}
266
268{
269 return false;
270}
271
273{
274 return false;
275}
276
278{
279 return true; // should be supported at least
280}
281
283{
284 return false;
285}
286
288{
289 return false;
290}
291
293{
294 return false;
295}
296
298{
299 return false;
300}
301
303{
304 return false;
305}
306
308{
309 return false;
310}
311
313{
314 return false;
315}
316
318{
319 return 0; // 0 means no limit
320}
321
323{
324 return 0; // 0 means no limit
325}
326
328{
329 return 0; // 0 means no limit
330}
331
333{
334 return false;
335}
336
338{
339 return false;
340}
341
343{
344 return false;
345}
346
348{
349 return false;
350}
351
353{
354 return false;
355}
356
358{
359 // for the moment, we have read-only addresses, but this might change in the future
360 return true;
361}
362
364{
365 return false;
366}
367
369{
370 return false;
371}
372
374{
375 return false;
376}
377
379{
380 return false;
381}
382
384{
385 return false;
386}
387
389{
390 return false;
391}
392
393sal_Bool SAL_CALL MacabDatabaseMetaData::supportsConvert( sal_Int32, sal_Int32 )
394{
395 return false;
396}
397
399{
400 return false;
401}
402
404{
405 return false;
406}
407
409{
410 return false;
411}
412
414{
415 return false;
416}
417
419{
420 return false;
421}
422
424{
425 return false;
426}
427
429{
430 return false;
431}
432
434{
435 return false;
436}
437
439{
440 return false;
441}
442
444{
445 return false;
446}
447
449{
450 return false;
451}
452
454{
455 return false;
456}
457
459{
460 return false;
461}
462
464{
465 return false;
466}
467
469{
470 return false;
471}
472
474{
475 return false;
476}
477
479{
480 return false;
481}
482
484{
485 return false;
486}
487
489{
490 return false;
491}
492
494{
495 return false;
496}
497
499{
500 return false;
501}
502
504{
505 return false;
506}
507
509{
510 return false;
511}
512
514{
515 return false;
516}
517
519{
520 return false;
521}
522
524{
525 return false;
526}
527
529{
530 // if someday we support more than the default address book,
531 // this method should return the URL which was used to create it
532 return "sdbc:address:macab:";
533}
534
536{
537 return OUString();
538}
539
541{
542 return "macab";
543}
544
546{
548}
549
551{
552 return OUString();
553}
554
556{
557 return OUString();
558}
559
561{
562 return OUString();
563}
564
566{
567 return OUString();
568}
569
571{
573}
574
576{
577 return TransactionIsolation::NONE;
578}
579
581{
583}
584
586{
587 return OUString();
588}
589
591{
592 return OUString();
593}
594
596{
597 return OUString();
598}
599
601{
602 return OUString();
603}
604
606{
607 return OUString();
608}
609
611{
612 return OUString();
613}
614
616{
617 return false;
618}
619
621{
622 return false;
623}
624
626{
627 return true;
628}
629
631{
632 return false;
633}
634
636{
637 return false;
638}
639
641{
642 return 0; // 0 means no limit
643}
644
646{
647 return 0; // 0 means no limit
648}
649
651{
652 return 0; // 0 means no limit
653}
654
656{
657 return 0; // 0 means no limit
658}
659
661{
662 switch (setType)
663 {
664 case ResultSetType::FORWARD_ONLY:
665 case ResultSetType::SCROLL_INSENSITIVE:
666 return true;
667 }
668 return false;
669}
670
671sal_Bool SAL_CALL MacabDatabaseMetaData::supportsResultSetConcurrency( sal_Int32 setType, sal_Int32 )
672{
673 switch (setType)
674 {
675 case ResultSetType::FORWARD_ONLY:
676 case ResultSetType::SCROLL_INSENSITIVE:
677 return true;
678 }
679 return false;
680}
681
683{
684 return false;
685}
686
688{
689 return false;
690}
691
693{
694 return false;
695}
696
698{
699 return false;
700}
701
703{
704 return false;
705}
706
708{
709 return false;
710}
711
713{
714 return false;
715}
716
718{
719 return false;
720}
721
723{
724 return false;
725}
726
728{
729 return false;
730}
731
733{
734 return m_xConnection;
735}
736
738{
739 rtl::Reference<::connectivity::ODatabaseMetaDataResultSet> pResult = new ::connectivity::ODatabaseMetaDataResultSet(ODatabaseMetaDataResultSet::eTableTypes);
740
741 static ODatabaseMetaDataResultSet::ORows aRows = []
742 {
743 static constexpr OUStringLiteral aTable = u"TABLE";
747 aRow[1] = new ORowSetValueDecorator(OUString(aTable));
748 tmp.push_back(aRow);
749 return tmp;
750 }();
751 pResult->setRows(std::vector(aRows));
752 return pResult;
753}
754
756{
758
759 static ODatabaseMetaDataResultSet::ORows aRows = []()
760 {
763
764 // We support four types: char, timestamp, integer, float
766 aRow[1] = new ORowSetValueDecorator(OUString("CHAR"));
767 aRow[2] = new ORowSetValueDecorator(DataType::CHAR);
768 aRow[3] = new ORowSetValueDecorator(sal_Int32(254));
772 aRow[7] = new ORowSetValueDecorator(sal_Int32(ColumnValue::NULLABLE));
774 aRow[9] = new ORowSetValueDecorator(sal_Int32(ColumnSearch::CHAR));
783 aRow[18] = new ORowSetValueDecorator(sal_Int32(10));
784
785 tmp.push_back(aRow);
786
787 aRow[1] = new ORowSetValueDecorator(OUString("TIMESTAMP"));
788 aRow[2] = new ORowSetValueDecorator(DataType::TIMESTAMP);
789 aRow[3] = new ORowSetValueDecorator(sal_Int32(19));
792 tmp.push_back(aRow);
793
794 aRow[1] = new ORowSetValueDecorator(OUString("INTEGER"));
795 aRow[2] = new ORowSetValueDecorator(DataType::INTEGER);
796 aRow[3] = new ORowSetValueDecorator(sal_Int32(20));
797 aRow[15] = new ORowSetValueDecorator(sal_Int32(20));
798 tmp.push_back(aRow);
799
800 aRow[1] = new ORowSetValueDecorator(OUString("FLOAT"));
801 aRow[2] = new ORowSetValueDecorator(DataType::FLOAT);
802 aRow[3] = new ORowSetValueDecorator(sal_Int32(20));
803 aRow[15] = new ORowSetValueDecorator(sal_Int32(15));
804 tmp.push_back(aRow);
805
806 return tmp;
807 }();
808 pResult->setRows(std::vector(aRows));
809 return pResult;
810}
811
813{
815}
816
818{
820}
821
823 const Any&, const OUString&, const OUString&,
824 const OUString& )
825{
827}
828
830 const Any&,
831 const OUString&,
832 const OUString& tableNamePattern,
833 const OUString& columnNamePattern)
834{
836 MacabRecords *aRecords;
837 OUString sTableName;
838
839 aRecords = m_xConnection->getAddressBook()->getMacabRecordsMatch(tableNamePattern);
840
842 if(aRecords != nullptr)
843 {
844 MacabHeader *aHeader = aRecords->getHeader();
845 sTableName = aRecords->getName();
846
848
852 aRow[3] = new ORowSetValueDecorator(sTableName);
855 aRow[10] = new ORowSetValueDecorator(sal_Int32(10));
861 aRow[16] = new ORowSetValueDecorator(sal_Int32(254));
862 aRow[18] = new ORowSetValueDecorator(OUString("YES"));
863
864 sal_Int32 nPosition = 1;
865 OUString sName;
866
868
869 for ( aField = aHeader->begin();
870 aField != aHeader->end();
871 ++aField, ++nPosition)
872 {
873
874 sName = CFStringToOUString(static_cast<CFStringRef>((*aField)->value));
875 if (match(columnNamePattern, sName, '\0'))
876 {
877 aRow[4] = new ORowSetValueDecorator(sName);
878 aRow[17] = new ORowSetValueDecorator(nPosition);
879 switch((*aField)->type)
880 {
881 case kABStringProperty:
882 aRow[5] = new ORowSetValueDecorator(DataType::CHAR);
883 aRow[6] = new ORowSetValueDecorator(OUString("CHAR"));
884 aRow[7] = new ORowSetValueDecorator(sal_Int32(256));
885 aRows.push_back(aRow);
886 break;
887 case kABDateProperty:
888 aRow[5] = new ORowSetValueDecorator(DataType::TIMESTAMP);
889 aRow[6] = new ORowSetValueDecorator(OUString("TIMESTAMP"));
890 aRows.push_back(aRow);
891 break;
892 case kABIntegerProperty:
893 aRow[5] = new ORowSetValueDecorator(DataType::INTEGER);
894 aRow[6] = new ORowSetValueDecorator(OUString("INTEGER"));
895 aRow[7] = new ORowSetValueDecorator(sal_Int32(20));
896 aRows.push_back(aRow);
897 break;
898 case kABRealProperty:
899 aRow[5] = new ORowSetValueDecorator(DataType::FLOAT);
900 aRow[6] = new ORowSetValueDecorator(OUString("FLOAT"));
901 aRow[7] = new ORowSetValueDecorator(sal_Int32(15));
902 aRows.push_back(aRow);
903 break;
904 default:
905 ;
906 // shouldn't happen -- throw an error...?
907 }
908 }
909 }
910 }
911 pResult->setRows(std::move(aRows));
912 return pResult;
913}
914
916 const Any&,
917 const OUString&,
918 const OUString&,
919 const Sequence< OUString >& types)
920{
922
923 // check whether we have tables in the requested types
924 // for the moment, we answer only the "TABLE" table type
925 // when no types are given at all, we return all the tables
926 static constexpr OUStringLiteral aTable = u"TABLE";
927 bool bTableFound = false;
928 const OUString* p = types.getConstArray(),
929 * pEnd = p + types.getLength();
930
931 if (p == pEnd)
932 {
933 bTableFound = true;
934 }
935 else while (p < pEnd)
936 {
937 if (match(*p, aTable, '\0'))
938 {
939 bTableFound = true;
940 break;
941 }
942 p++;
943 }
944 if (!bTableFound)
945 return pResult;
946
947 static ODatabaseMetaDataResultSet::ORows aRows = [&]()
948 {
951
952 MacabRecords *xRecords = m_xConnection->getAddressBook()->getMacabRecords();
953 std::vector<MacabGroup *> xGroups = m_xConnection->getAddressBook()->getMacabGroups();
954 sal_Int32 i, nGroups;
955 nGroups = xGroups.size();
956
960 aRow[3] = new ORowSetValueDecorator(xRecords->getName());
961 aRow[4] = new ORowSetValueDecorator(OUString(aTable));
963 tmp.push_back(aRow);
964
965 for(i = 0; i < nGroups; i++)
966 {
967 aRow[3] = new ORowSetValueDecorator(xGroups[i]->getName());
968 tmp.push_back(aRow);
969 }
970 return tmp;
971 }();
972 pResult->setRows(std::vector(aRows));
973 return pResult;
974}
975
977 const Any&, const OUString&,
978 const OUString&, const OUString& )
979{
981}
982
984 const Any&, const OUString&,
985 const OUString& )
986{
988}
989
991 const Any&, const OUString&, const OUString& table )
992{
994
996
997 if (m_xConnection->getAddressBook()->getMacabRecords(table) != nullptr)
998 {
1000
1001 OUString sName = CFStringToOUString(kABModificationDateProperty);
1002
1005 aRow[2] = new ORowSetValueDecorator(sName);
1006 aRow[3] = new ORowSetValueDecorator(DataType::TIMESTAMP);
1007 aRow[4] = new ORowSetValueDecorator(OUString("TIMESTAMP"));
1008
1013
1014 aRows.push_back(aRow);
1015 }
1016 pResult->setRows(std::move(aRows));
1017 return pResult;
1018}
1019
1021 const Any&, const OUString&, const OUString& )
1022{
1024}
1025
1027 const Any&, const OUString&, const OUString& )
1028{
1030}
1031
1033 const Any&, const OUString&, const OUString& )
1034{
1036}
1037
1039 const Any&, const OUString&, const OUString&,
1041{
1043}
1044
1046 const Any&, const OUString&, const OUString&, sal_Int32,
1047 sal_Bool )
1048{
1050}
1051
1053 const Any&, const OUString&, const OUString& )
1054{
1056}
1057
1059 const Any&, const OUString&,
1060 const OUString&, const Any&,
1061 const OUString&, const OUString& )
1062{
1064}
1065
1066Reference< XResultSet > SAL_CALL MacabDatabaseMetaData::getUDTs( const Any&, const OUString&, const OUString&, const Sequence< sal_Int32 >& )
1067{
1068 OSL_FAIL("Not implemented yet!");
1069 throw SQLException();
1070}
1071
1072
1073/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
#define MACAB_DRIVER_VERSION
Definition: MacabDriver.hxx:30
#define MACAB_DRIVER_VERSION_MINOR
Definition: MacabDriver.hxx:32
#define MACAB_DRIVER_VERSION_MAJOR
Definition: MacabDriver.hxx:31
static ORowSetValueDecoratorRef const & getEmptyValue()
return an empty ORowSetValueDecorator
std::vector< ORowSetValueDecoratorRef > ORow
@ eTableTypes
describes a result set as expected by XDatabaseMetaData::getTableTypes
@ eVersionColumns
describes a result set as expected by XDatabaseMetaData::getVersionColumns
@ ePrimaryKeys
describes a result set as expected by XDatabaseMetaData::getPrimaryKeys
@ eIndexInfo
describes a result set as expected by XDatabaseMetaData::getIndexInfo
@ eImportedKeys
describes a result set as expected by XDatabaseMetaData::getImportedKeys
@ eTypeInfo
describes a result set as expected by XDatabaseMetaData::getTypeInfo
@ eSchemas
describes a result set as expected by XDatabaseMetaData::getSchemas
@ eColumnPrivileges
describes a result set as expected by XDatabaseMetaData::getColumnPrivileges
@ eProcedures
describes a result set as expected by XDatabaseMetaData::getProcedures
@ eTables
describes a result set as expected by XDatabaseMetaData::getTables
@ eCrossReference
describes a result set as expected by XDatabaseMetaData::getCrossReference
@ eExportedKeys
describes a result set as expected by XDatabaseMetaData::getExportedKeys
@ eBestRowIdentifier
describes a result set as expected by XDatabaseMetaData::getBestRowIdentifier
@ eColumns
describes a result set as expected by XDatabaseMetaData::getColumns
@ eCatalogs
describes a result set as expected by XDatabaseMetaData::getCatalogs
@ eProcedureColumns
describes a result set as expected by XDatabaseMetaData::getProcedureColumns
@ eTablePrivileges
describes a result set as expected by XDatabaseMetaData::getTablePrivileges
static ORowSetValueDecoratorRef const & get1Value()
return an ORowSetValueDecorator with 1 as value
static ORowSetValueDecoratorRef const & get0Value()
return an ORowSetValueDecorator with 0 as value
static ORowSetValueDecoratorRef const & getQuoteValue()
return an ORowSetValueDecorator with string ' as value
ORowSetValueDecorator decorates an ORowSetValue so the value is "refcounted".
Definition: FValue.hxx:402
virtual sal_Bool SAL_CALL supportsCoreSQLGrammar() override
virtual OUString SAL_CALL getStringFunctions() override
virtual OUString SAL_CALL getProcedureTerm() override
virtual sal_Bool SAL_CALL supportsSubqueriesInIns() override
virtual sal_Bool SAL_CALL supportsPositionedDelete() override
virtual sal_Bool SAL_CALL supportsMultipleResultSets() override
virtual sal_Bool SAL_CALL supportsCatalogsInPrivilegeDefinitions() override
virtual sal_Bool SAL_CALL supportsUnionAll() override
virtual sal_Bool SAL_CALL supportsStoredProcedures() override
virtual sal_Int32 SAL_CALL getDefaultTransactionIsolation() override
virtual sal_Bool SAL_CALL dataDefinitionIgnoredInTransactions() override
virtual sal_Bool SAL_CALL supportsPositionedUpdate() override
virtual sal_Bool SAL_CALL supportsSchemasInTableDefinitions() override
virtual sal_Bool SAL_CALL supportsGroupByUnrelated() override
virtual sal_Bool SAL_CALL storesLowerCaseQuotedIdentifiers() override
virtual sal_Bool SAL_CALL storesUpperCaseIdentifiers() override
virtual sal_Int32 SAL_CALL getMaxSchemaNameLength() override
virtual sal_Int32 SAL_CALL getMaxColumnsInSelect() override
virtual sal_Bool SAL_CALL nullPlusNonNullIsNull() override
virtual sal_Bool SAL_CALL supportsColumnAliasing() override
virtual OUString SAL_CALL getSystemFunctions() override
virtual sal_Bool SAL_CALL supportsDataDefinitionAndDataManipulationTransactions() override
virtual sal_Int32 SAL_CALL getMaxColumnsInGroupBy() override
virtual sal_Bool SAL_CALL supportsOpenCursorsAcrossRollback() override
virtual sal_Int32 SAL_CALL getMaxRowSize() override
virtual sal_Int32 SAL_CALL getMaxBinaryLiteralLength() override
virtual sal_Bool SAL_CALL supportsMixedCaseIdentifiers() override
virtual sal_Bool SAL_CALL storesUpperCaseQuotedIdentifiers() override
virtual OUString SAL_CALL getDatabaseProductName() override
virtual sal_Bool SAL_CALL supportsMultipleTransactions() override
virtual sal_Bool SAL_CALL supportsTableCorrelationNames() override
virtual OUString SAL_CALL getTimeDateFunctions() override
virtual sal_Bool SAL_CALL othersUpdatesAreVisible(sal_Int32 setType) override
virtual sal_Bool SAL_CALL supportsOpenStatementsAcrossCommit() override
virtual css::uno::Reference< css::sdbc::XResultSet > SAL_CALL getProcedures(const css::uno::Any &catalog, const OUString &schemaPattern, const OUString &procedureNamePattern) override
virtual css::uno::Reference< css::sdbc::XResultSet > SAL_CALL getCatalogs() override
virtual sal_Bool SAL_CALL supportsIntegrityEnhancementFacility() override
virtual sal_Bool SAL_CALL allTablesAreSelectable() override
virtual sal_Bool SAL_CALL nullsAreSortedHigh() override
virtual sal_Bool SAL_CALL usesLocalFiles() override
virtual sal_Bool SAL_CALL supportsSubqueriesInComparisons() override
virtual sal_Bool SAL_CALL supportsTransactionIsolationLevel(sal_Int32 level) override
virtual sal_Bool SAL_CALL supportsCatalogsInTableDefinitions() override
virtual sal_Bool SAL_CALL supportsBatchUpdates() override
virtual sal_Bool SAL_CALL supportsResultSetType(sal_Int32 setType) override
virtual css::uno::Reference< css::sdbc::XResultSet > SAL_CALL getPrimaryKeys(const css::uno::Any &catalog, const OUString &schema, const OUString &table) override
virtual css::uno::Reference< css::sdbc::XResultSet > SAL_CALL getColumnPrivileges(const css::uno::Any &catalog, const OUString &schema, const OUString &table, const OUString &columnNamePattern) override
virtual sal_Bool SAL_CALL supportsOpenStatementsAcrossRollback() override
virtual OUString SAL_CALL getCatalogSeparator() override
virtual OUString SAL_CALL getSchemaTerm() override
virtual sal_Int32 SAL_CALL getMaxProcedureNameLength() override
virtual sal_Bool SAL_CALL ownInsertsAreVisible(sal_Int32 setType) override
virtual sal_Int32 SAL_CALL getMaxCharLiteralLength() override
virtual css::uno::Reference< css::sdbc::XConnection > SAL_CALL getConnection() override
virtual css::uno::Reference< css::sdbc::XResultSet > SAL_CALL getUDTs(const css::uno::Any &catalog, const OUString &schemaPattern, const OUString &typeNamePattern, const css::uno::Sequence< sal_Int32 > &types) override
virtual sal_Int32 SAL_CALL getMaxColumnsInIndex() override
virtual sal_Bool SAL_CALL supportsMinimumSQLGrammar() override
virtual css::uno::Reference< css::sdbc::XResultSet > SAL_CALL getColumns(const css::uno::Any &catalog, const OUString &schemaPattern, const OUString &tableNamePattern, const OUString &columnNamePattern) override
virtual sal_Bool SAL_CALL supportsLikeEscapeClause() override
virtual sal_Bool SAL_CALL supportsMixedCaseQuotedIdentifiers() override
virtual sal_Bool SAL_CALL supportsAlterTableWithAddColumn() override
virtual sal_Bool SAL_CALL supportsOuterJoins() override
virtual sal_Bool SAL_CALL supportsResultSetConcurrency(sal_Int32 setType, sal_Int32 concurrency) override
virtual css::uno::Reference< css::sdbc::XResultSet > SAL_CALL getImportedKeys(const css::uno::Any &catalog, const OUString &schema, const OUString &table) override
virtual sal_Int32 SAL_CALL getMaxStatementLength() override
virtual sal_Int32 SAL_CALL getDriverMajorVersion() override
virtual OUString SAL_CALL getDriverName() override
virtual sal_Bool SAL_CALL supportsExpressionsInOrderBy() override
virtual sal_Bool SAL_CALL supportsSubqueriesInExists() override
virtual sal_Bool SAL_CALL supportsExtendedSQLGrammar() override
virtual sal_Bool SAL_CALL supportsOpenCursorsAcrossCommit() override
virtual css::uno::Reference< css::sdbc::XResultSet > SAL_CALL getExportedKeys(const css::uno::Any &catalog, const OUString &schema, const OUString &table) override
virtual sal_Bool SAL_CALL supportsANSI92FullSQL() override
virtual sal_Bool SAL_CALL supportsTypeConversion() override
virtual sal_Bool SAL_CALL supportsAlterTableWithDropColumn() override
virtual sal_Bool SAL_CALL supportsLimitedOuterJoins() override
virtual sal_Bool SAL_CALL supportsOrderByUnrelated() override
virtual sal_Int32 SAL_CALL getMaxColumnsInOrderBy() override
virtual OUString SAL_CALL getCatalogTerm() override
virtual sal_Bool SAL_CALL ownDeletesAreVisible(sal_Int32 setType) override
virtual sal_Bool SAL_CALL dataDefinitionCausesTransactionCommit() override
virtual sal_Bool SAL_CALL supportsSchemasInPrivilegeDefinitions() override
virtual sal_Bool SAL_CALL supportsSchemasInProcedureCalls() override
virtual css::uno::Reference< css::sdbc::XResultSet > SAL_CALL getTables(const css::uno::Any &catalog, const OUString &schemaPattern, const OUString &tableNamePattern, const css::uno::Sequence< OUString > &types) override
virtual OUString SAL_CALL getUserName() override
virtual sal_Bool SAL_CALL supportsCatalogsInProcedureCalls() override
virtual sal_Bool SAL_CALL othersInsertsAreVisible(sal_Int32 setType) override
virtual sal_Int32 SAL_CALL getMaxIndexLength() override
virtual sal_Bool SAL_CALL nullsAreSortedAtStart() override
virtual sal_Bool SAL_CALL storesMixedCaseQuotedIdentifiers() override
virtual OUString SAL_CALL getDatabaseProductVersion() override
virtual css::uno::Reference< css::sdbc::XResultSet > SAL_CALL getBestRowIdentifier(const css::uno::Any &catalog, const OUString &schema, const OUString &table, sal_Int32 scope, sal_Bool nullable) override
virtual css::uno::Reference< css::sdbc::XResultSet > SAL_CALL getTypeInfo() override
virtual sal_Bool SAL_CALL supportsSubqueriesInQuantifieds() override
virtual sal_Bool SAL_CALL supportsUnion() override
virtual sal_Bool SAL_CALL supportsSchemasInDataManipulation() override
virtual sal_Bool SAL_CALL supportsCatalogsInIndexDefinitions() override
virtual sal_Bool SAL_CALL supportsSchemasInIndexDefinitions() override
virtual OUString SAL_CALL getIdentifierQuoteString() override
virtual sal_Bool SAL_CALL updatesAreDetected(sal_Int32 setType) override
virtual sal_Bool SAL_CALL ownUpdatesAreVisible(sal_Int32 setType) override
virtual sal_Int32 SAL_CALL getMaxColumnsInTable() override
virtual css::uno::Reference< css::sdbc::XResultSet > SAL_CALL getCrossReference(const css::uno::Any &primaryCatalog, const OUString &primarySchema, const OUString &primaryTable, const css::uno::Any &foreignCatalog, const OUString &foreignSchema, const OUString &foreignTable) override
virtual sal_Int32 SAL_CALL getMaxTablesInSelect() override
virtual sal_Int32 SAL_CALL getMaxCursorNameLength() override
virtual OUString SAL_CALL getSearchStringEscape() override
virtual sal_Int32 SAL_CALL getMaxTableNameLength() override
virtual sal_Int32 SAL_CALL getMaxConnections() override
virtual OUString SAL_CALL getExtraNameCharacters() override
virtual sal_Bool SAL_CALL storesLowerCaseIdentifiers() override
virtual sal_Bool SAL_CALL isReadOnly() override
virtual sal_Bool SAL_CALL othersDeletesAreVisible(sal_Int32 setType) override
virtual OUString SAL_CALL getURL() override
virtual OUString SAL_CALL getNumericFunctions() override
virtual sal_Int32 SAL_CALL getMaxUserNameLength() override
virtual sal_Bool SAL_CALL allProceduresAreCallable() override
virtual css::uno::Reference< css::sdbc::XResultSet > SAL_CALL getVersionColumns(const css::uno::Any &catalog, const OUString &schema, const OUString &table) override
virtual sal_Bool SAL_CALL supportsANSI92IntermediateSQL() override
virtual sal_Bool SAL_CALL nullsAreSortedLow() override
virtual sal_Int32 SAL_CALL getDriverMinorVersion() override
virtual sal_Bool SAL_CALL supportsSelectForUpdate() override
virtual css::uno::Reference< css::sdbc::XResultSet > SAL_CALL getProcedureColumns(const css::uno::Any &catalog, const OUString &schemaPattern, const OUString &procedureNamePattern, const OUString &columnNamePattern) override
virtual sal_Bool SAL_CALL nullsAreSortedAtEnd() override
virtual css::uno::Reference< css::sdbc::XResultSet > SAL_CALL getIndexInfo(const css::uno::Any &catalog, const OUString &schema, const OUString &table, sal_Bool unique, sal_Bool approximate) override
virtual sal_Bool SAL_CALL supportsGroupByBeyondSelect() override
virtual sal_Bool SAL_CALL usesLocalFilePerTable() override
virtual OUString SAL_CALL getSQLKeywords() override
virtual sal_Bool SAL_CALL isCatalogAtStart() override
virtual sal_Bool SAL_CALL supportsGroupBy() override
virtual sal_Bool SAL_CALL supportsDataManipulationTransactionsOnly() override
virtual sal_Int32 SAL_CALL getMaxStatements() override
virtual sal_Int32 SAL_CALL getMaxColumnNameLength() override
virtual sal_Bool SAL_CALL insertsAreDetected(sal_Int32 setType) override
virtual sal_Bool SAL_CALL supportsTransactions() override
virtual css::uno::Reference< css::sdbc::XResultSet > SAL_CALL getTableTypes() override
virtual OUString SAL_CALL getDriverVersion() override
virtual sal_Bool SAL_CALL supportsCorrelatedSubqueries() override
virtual sal_Bool SAL_CALL supportsConvert(sal_Int32 fromType, sal_Int32 toType) override
virtual css::uno::Reference< css::sdbc::XResultSet > SAL_CALL getSchemas() override
virtual sal_Int32 SAL_CALL getMaxCatalogNameLength() override
virtual sal_Bool SAL_CALL doesMaxRowSizeIncludeBlobs() override
virtual css::uno::Reference< css::sdbc::XResultSet > SAL_CALL getTablePrivileges(const css::uno::Any &catalog, const OUString &schemaPattern, const OUString &tableNamePattern) override
rtl::Reference< MacabConnection > m_xConnection
virtual sal_Bool SAL_CALL storesMixedCaseIdentifiers() override
virtual sal_Bool SAL_CALL supportsDifferentTableCorrelationNames() override
virtual sal_Bool SAL_CALL supportsCatalogsInDataManipulation() override
virtual sal_Bool SAL_CALL supportsANSI92EntryLevelSQL() override
virtual sal_Bool SAL_CALL supportsFullOuterJoins() override
virtual sal_Bool SAL_CALL supportsNonNullableColumns() override
virtual sal_Bool SAL_CALL deletesAreDetected(sal_Int32 setType) override
OUString const & getName() const
MacabHeader * getHeader() const
ULONG m_refCount
float u
OUString sName
void * p
@ table
OUString CFStringToOUString(const CFStringRef sOrig)
bool match(const sal_Unicode *pWild, const sal_Unicode *pStr, const sal_Unicode cEscape)
Definition: CommonTools.cxx:51
int i
Reference< XConnection > m_xConnection
unsigned char sal_Bool