[Libreoffice-commits] core.git: connectivity/source

Noel Grandin noel at peralex.com
Mon Mar 23 02:05:56 PDT 2015


 connectivity/source/commontools/parameters.cxx                  |    5 
 connectivity/source/commontools/propertyids.cxx                 |  193 ++++++----
 connectivity/source/drivers/mork/MCatalog.cxx                   |    3 
 connectivity/source/drivers/mork/MConnection.hxx                |    2 
 connectivity/source/drivers/mork/MQueryHelper.cxx               |    5 
 connectivity/source/drivers/mork/MQueryHelper.hxx               |    1 
 connectivity/source/drivers/mork/MResultSet.cxx                 |   72 ++-
 connectivity/source/drivers/mork/MResultSet.hxx                 |    2 
 connectivity/source/drivers/mork/MResultSetMetaData.cxx         |    2 
 connectivity/source/drivers/mork/MStatement.cxx                 |   49 ++
 connectivity/source/drivers/mork/MStatement.hxx                 |    3 
 connectivity/source/drivers/mork/MTable.hxx                     |    2 
 connectivity/source/drivers/odbc/ODatabaseMetaDataResultSet.cxx |   21 +
 connectivity/source/drivers/odbc/OResultSet.cxx                 |    5 
 connectivity/source/drivers/postgresql/pq_databasemetadata.cxx  |   20 +
 connectivity/source/drivers/postgresql/pq_databasemetadata.hxx  |    1 
 connectivity/source/drivers/postgresql/pq_resultsetmetadata.cxx |   10 
 connectivity/source/drivers/postgresql/pq_resultsetmetadata.hxx |    2 
 connectivity/source/inc/odbc/ODatabaseMetaDataResultSet.hxx     |   11 
 connectivity/source/inc/odbc/OResultSet.hxx                     |    3 
 20 files changed, 324 insertions(+), 88 deletions(-)

New commits:
commit 3e8a7ce7dffcf46a692e5da0b281a104df8d4d95
Author: Noel Grandin <noel at peralex.com>
Date:   Mon Mar 23 10:50:14 2015 +0200

    Revert "loplugin:constantfunction: connectivity"
    
    it seems to be causing unit-test and build failures
    
    This reverts commit 5cbb51c009fa266e8418ef93799ac64e431c22f5.
    
    Change-Id: Idc6372f98200b23828aa19b22a75b6b2b640d1ab

diff --git a/connectivity/source/commontools/parameters.cxx b/connectivity/source/commontools/parameters.cxx
index 1b512a0..d520e37 100644
--- a/connectivity/source/commontools/parameters.cxx
+++ b/connectivity/source/commontools/parameters.cxx
@@ -115,6 +115,11 @@ namespace dbtools
     }
 
 
+    void ParameterManager::disposing( const EventObject& /*_rDisposingEvent*/ )
+    {
+    }
+
+
     void ParameterManager::setAllParametersNull()
     {
         OSL_PRECOND( isAlive(), "ParameterManager::setAllParametersNull: not initialized, or already disposed!" );
diff --git a/connectivity/source/commontools/propertyids.cxx b/connectivity/source/commontools/propertyids.cxx
index 9f0635e..5b3d635 100644
--- a/connectivity/source/commontools/propertyids.cxx
+++ b/connectivity/source/commontools/propertyids.cxx
@@ -22,6 +22,77 @@
 
 namespace dbtools
 {
+    const sal_Char* getPROPERTY_QUERYTIMEOUT()          { return    "QueryTimeOut"; }
+        const sal_Char* getPROPERTY_MAXFIELDSIZE()          { return    "MaxFieldSize"; }
+        const sal_Char* getPROPERTY_MAXROWS()               { return    "MaxRows"; }
+        const sal_Char* getPROPERTY_CURSORNAME()            { return    "CursorName"; }
+        const sal_Char* getPROPERTY_RESULTSETCONCURRENCY()  { return    "ResultSetConcurrency"; }
+        const sal_Char* getPROPERTY_RESULTSETTYPE()         { return    "ResultSetType"; }
+        const sal_Char* getPROPERTY_FETCHDIRECTION()        { return    "FetchDirection"; }
+        const sal_Char* getPROPERTY_FETCHSIZE()             { return    "FetchSize"; }
+        const sal_Char* getPROPERTY_ESCAPEPROCESSING()      { return    "EscapeProcessing"; }
+        const sal_Char* getPROPERTY_USEBOOKMARKS()          { return    "UseBookmarks"; }
+
+        const sal_Char* getPROPERTY_NAME()                  { return    "Name"; }
+        const sal_Char* getPROPERTY_TYPE()                  { return    "Type"; }
+        const sal_Char* getPROPERTY_TYPENAME()              { return    "TypeName"; }
+        const sal_Char* getPROPERTY_PRECISION()             { return    "Precision"; }
+        const sal_Char* getPROPERTY_SCALE()                 { return    "Scale"; }
+        const sal_Char* getPROPERTY_ISNULLABLE()            { return    "IsNullable"; }
+        const sal_Char* getPROPERTY_ISAUTOINCREMENT()       { return    "IsAutoIncrement"; }
+        const sal_Char* getPROPERTY_ISROWVERSION()          { return    "IsRowVersion"; }
+        const sal_Char* getPROPERTY_DESCRIPTION()           { return    "Description"; }
+        const sal_Char* getPROPERTY_DEFAULTVALUE()          { return    "DefaultValue"; }
+
+        const sal_Char* getPROPERTY_REFERENCEDTABLE()       { return    "ReferencedTable"; }
+        const sal_Char* getPROPERTY_UPDATERULE()            { return    "UpdateRule"; }
+        const sal_Char* getPROPERTY_DELETERULE()            { return    "DeleteRule"; }
+        const sal_Char* getPROPERTY_CATALOG()               { return    "Catalog"; }
+        const sal_Char* getPROPERTY_ISUNIQUE()              { return    "IsUnique"; }
+        const sal_Char* getPROPERTY_ISPRIMARYKEYINDEX()     { return    "IsPrimaryKeyIndex"; }
+        const sal_Char* getPROPERTY_ISCLUSTERED()           { return    "IsClustered"; }
+        const sal_Char* getPROPERTY_ISASCENDING()           { return    "IsAscending"; }
+        const sal_Char* getPROPERTY_SCHEMANAME()            { return    "SchemaName"; }
+        const sal_Char* getPROPERTY_CATALOGNAME()           { return    "CatalogName"; }
+        const sal_Char* getPROPERTY_COMMAND()               { return    "Command"; }
+        const sal_Char* getPROPERTY_CHECKOPTION()           { return    "CheckOption"; }
+        const sal_Char* getPROPERTY_PASSWORD()              { return    "Password"; }
+        const sal_Char* getPROPERTY_RELATEDCOLUMN()         { return    "RelatedColumn"; }
+
+        const sal_Char* getPROPERTY_FUNCTION()              { return    "Function"; }
+        const sal_Char* getPROPERTY_AGGREGATEFUNCTION()     { return    "AggregateFunction"; }
+        const sal_Char* getPROPERTY_TABLENAME()             { return    "TableName"; }
+        const sal_Char* getPROPERTY_REALNAME()              { return    "RealName"; }
+        const sal_Char* getPROPERTY_DBASEPRECISIONCHANGED() { return    "DbasePrecisionChanged"; }
+        const sal_Char* getPROPERTY_ISCURRENCY()            { return    "IsCurrency"; }
+        const sal_Char* getPROPERTY_ISBOOKMARKABLE()        { return    "IsBookmarkable"; }
+
+        const sal_Char* getPROPERTY_FORMATKEY()             { return    "FormatKey"; }
+        const sal_Char* getPROPERTY_LOCALE()                { return    "Locale"; }
+
+        const sal_Char* getPROPERTY_AUTOINCREMENTCREATION() { return    "AutoIncrementCreation"; }
+        const sal_Char* getPROPERTY_PRIVILEGES()            { return    "Privileges"; }
+        const sal_Char* getPROPERTY_ID_HAVINGCLAUSE()       { return    "HavingClause"; }
+        const sal_Char* getPROPERTY_ID_ISSIGNED()           { return    "IsSigned"; }
+        const sal_Char* getPROPERTY_ID_ISSEARCHABLE()       { return    "IsSearchable"; }
+
+        const sal_Char* getPROPERTY_ID_APPLYFILTER()        { return    "ApplyFilter"; }
+        const sal_Char* getPROPERTY_ID_FILTER()             { return    "Filter"; }
+        const sal_Char* getPROPERTY_ID_MASTERFIELDS()       { return    "MasterFields"; }
+        const sal_Char* getPROPERTY_ID_DETAILFIELDS()       { return    "DetailFields"; }
+        const sal_Char* getPROPERTY_ID_FIELDTYPE()          { return    "FieldType"; }
+        const sal_Char* getPROPERTY_ID_VALUE()              { return    "Value"; }
+        const sal_Char* getPROPERTY_ID_ACTIVE_CONNECTION()  { return    "ActiveConnection"; }
+        const sal_Char* getPROPERTY_ID_LABEL()              { return    "Label"; }
+
+
+    //= error messages
+
+        const sal_Char* getSQLSTATE_SEQUENCE()              { return    "HY010"; }
+        const sal_Char* getSTR_DELIMITER()                  { return    "/"; }
+
+
+
         OPropertyMap::~OPropertyMap()
         {
             ::std::map<sal_Int32 , rtl_uString*>::iterator aIter = m_aPropertyMap.begin();
@@ -46,68 +117,68 @@ namespace dbtools
             rtl_uString* pStr = NULL;
             switch(_nIndex)
             {
-                case PROPERTY_ID_QUERYTIMEOUT:              { rtl_uString_newFromAscii(&pStr, "QueryTimeOut"         ); break; }
-                case PROPERTY_ID_MAXFIELDSIZE:              { rtl_uString_newFromAscii(&pStr, "MaxFieldSize"         ); break; }
-                case PROPERTY_ID_MAXROWS:                   { rtl_uString_newFromAscii(&pStr, "MaxRows"              ); break; }
-                case PROPERTY_ID_CURSORNAME:                { rtl_uString_newFromAscii(&pStr, "CursorName"           ); break; }
-                case PROPERTY_ID_RESULTSETCONCURRENCY:      { rtl_uString_newFromAscii(&pStr, "ResultSetConcurrency" ); break; }
-                case PROPERTY_ID_RESULTSETTYPE:             { rtl_uString_newFromAscii(&pStr, "ResultSetType"        ); break; }
-                case PROPERTY_ID_FETCHDIRECTION:            { rtl_uString_newFromAscii(&pStr, "FetchDirection"       ); break; }
-                case PROPERTY_ID_FETCHSIZE:                 { rtl_uString_newFromAscii(&pStr, "FetchSize"            ); break; }
-                case PROPERTY_ID_ESCAPEPROCESSING:          { rtl_uString_newFromAscii(&pStr, "EscapeProcessing"     ); break; }
-                case PROPERTY_ID_USEBOOKMARKS:              { rtl_uString_newFromAscii(&pStr, "UseBookmarks"         ); break; }
+                case PROPERTY_ID_QUERYTIMEOUT:              { rtl_uString_newFromAscii(&pStr,getPROPERTY_QUERYTIMEOUT()         ); break; }
+                case PROPERTY_ID_MAXFIELDSIZE:              { rtl_uString_newFromAscii(&pStr,getPROPERTY_MAXFIELDSIZE()         ); break; }
+                case PROPERTY_ID_MAXROWS:                   { rtl_uString_newFromAscii(&pStr,getPROPERTY_MAXROWS()              ); break;       }
+                case PROPERTY_ID_CURSORNAME:                { rtl_uString_newFromAscii(&pStr,getPROPERTY_CURSORNAME()           ); break;   }
+                case PROPERTY_ID_RESULTSETCONCURRENCY:      { rtl_uString_newFromAscii(&pStr,getPROPERTY_RESULTSETCONCURRENCY() ); break; }
+                case PROPERTY_ID_RESULTSETTYPE:             { rtl_uString_newFromAscii(&pStr,getPROPERTY_RESULTSETTYPE()            ); break; }
+                case PROPERTY_ID_FETCHDIRECTION:            { rtl_uString_newFromAscii(&pStr,getPROPERTY_FETCHDIRECTION()       ); break; }
+                case PROPERTY_ID_FETCHSIZE:                 { rtl_uString_newFromAscii(&pStr,getPROPERTY_FETCHSIZE()                ); break;   }
+                case PROPERTY_ID_ESCAPEPROCESSING:          { rtl_uString_newFromAscii(&pStr,getPROPERTY_ESCAPEPROCESSING()     ); break; }
+                case PROPERTY_ID_USEBOOKMARKS:              { rtl_uString_newFromAscii(&pStr,getPROPERTY_USEBOOKMARKS()         ); break; }
                 // Column
-                case PROPERTY_ID_NAME:                      { rtl_uString_newFromAscii(&pStr, "Name"                 ); break; }
-                case PROPERTY_ID_TYPE:                      { rtl_uString_newFromAscii(&pStr, "Type"                 ); break; }
-                case PROPERTY_ID_TYPENAME:                  { rtl_uString_newFromAscii(&pStr, "TypeName"             ); break; }
-                case PROPERTY_ID_PRECISION:                 { rtl_uString_newFromAscii(&pStr, "Precision"            ); break; }
-                case PROPERTY_ID_SCALE:                     { rtl_uString_newFromAscii(&pStr, "Scale"                ); break; }
-                case PROPERTY_ID_ISNULLABLE:                { rtl_uString_newFromAscii(&pStr, "IsNullable"           ); break; }
-                case PROPERTY_ID_ISAUTOINCREMENT:           { rtl_uString_newFromAscii(&pStr, "IsAutoIncrement"      ); break; }
-                case PROPERTY_ID_ISROWVERSION:              { rtl_uString_newFromAscii(&pStr, "IsRowVersion"         ); break; }
-                case PROPERTY_ID_DESCRIPTION:               { rtl_uString_newFromAscii(&pStr, "Description"          ); break; }
-                case PROPERTY_ID_DEFAULTVALUE:              { rtl_uString_newFromAscii(&pStr, "DefaultValue"         ); break; }
-
-                case PROPERTY_ID_REFERENCEDTABLE:           { rtl_uString_newFromAscii(&pStr, "ReferencedTable"      ); break; }
-                case PROPERTY_ID_UPDATERULE:                { rtl_uString_newFromAscii(&pStr, "UpdateRule"           ); break; }
-                case PROPERTY_ID_DELETERULE:                { rtl_uString_newFromAscii(&pStr, "DeleteRule"           ); break; }
-                case PROPERTY_ID_CATALOG:                   { rtl_uString_newFromAscii(&pStr, "Catalog"              ); break; }
-                case PROPERTY_ID_ISUNIQUE:                  { rtl_uString_newFromAscii(&pStr, "IsUnique"             ); break; }
-                case PROPERTY_ID_ISPRIMARYKEYINDEX:         { rtl_uString_newFromAscii(&pStr, "IsPrimaryKeyIndex"    ); break; }
-                case PROPERTY_ID_ISCLUSTERED:               { rtl_uString_newFromAscii(&pStr, "IsClustered"          ); break; }
-                case PROPERTY_ID_ISASCENDING:               { rtl_uString_newFromAscii(&pStr, "IsAscending"          ); break; }
-                case PROPERTY_ID_SCHEMANAME:                { rtl_uString_newFromAscii(&pStr, "SchemaName"           ); break; }
-                case PROPERTY_ID_CATALOGNAME:               { rtl_uString_newFromAscii(&pStr, "CatalogName"          ); break; }
-
-                case PROPERTY_ID_COMMAND:                   { rtl_uString_newFromAscii(&pStr, "Command"              ); break; }
-                case PROPERTY_ID_CHECKOPTION:               { rtl_uString_newFromAscii(&pStr, "CheckOption"          ); break; }
-                case PROPERTY_ID_PASSWORD:                  { rtl_uString_newFromAscii(&pStr, "Password"             ); break; }
-                case PROPERTY_ID_RELATEDCOLUMN:             { rtl_uString_newFromAscii(&pStr, "RelatedColumn"        ); break; }
-
-                case PROPERTY_ID_FUNCTION:                  { rtl_uString_newFromAscii(&pStr, "Function"             ); break; }
-                case PROPERTY_ID_AGGREGATEFUNCTION:         { rtl_uString_newFromAscii(&pStr, "AggregateFunction"    ); break; }
-                case PROPERTY_ID_TABLENAME:                 { rtl_uString_newFromAscii(&pStr, "TableName"            ); break; }
-                case PROPERTY_ID_REALNAME:                  { rtl_uString_newFromAscii(&pStr, "RealName"             ); break; }
-                case PROPERTY_ID_DBASEPRECISIONCHANGED:     { rtl_uString_newFromAscii(&pStr, "DbasePrecisionChanged"); break; }
-                case PROPERTY_ID_ISCURRENCY:                { rtl_uString_newFromAscii(&pStr, "IsCurrency"           ); break; }
-                case PROPERTY_ID_ISBOOKMARKABLE:            { rtl_uString_newFromAscii(&pStr, "IsBookmarkable"       ); break; }
-                case PROPERTY_ID_HY010:                     { rtl_uString_newFromAscii(&pStr, "HY010"                ); break; }
-                case PROPERTY_ID_DELIMITER:                 { rtl_uString_newFromAscii(&pStr, "/"                    ); break; }
-                case PROPERTY_ID_FORMATKEY:                 { rtl_uString_newFromAscii(&pStr, "FormatKey"            ); break; }
-                case PROPERTY_ID_LOCALE:                    { rtl_uString_newFromAscii(&pStr, "Locale"               ); break; }
-                case PROPERTY_ID_AUTOINCREMENTCREATION:     { rtl_uString_newFromAscii(&pStr, "AutoIncrementCreation"); break; }
-                case PROPERTY_ID_PRIVILEGES:                { rtl_uString_newFromAscii(&pStr, "Privileges"           ); break; }
-                case PROPERTY_ID_HAVINGCLAUSE:              { rtl_uString_newFromAscii(&pStr, "HavingClause"         ); break; }
-                case PROPERTY_ID_ISSIGNED:                  { rtl_uString_newFromAscii(&pStr, "IsSigned"             ); break; }
-                case PROPERTY_ID_ISSEARCHABLE:              { rtl_uString_newFromAscii(&pStr, "IsSearchable"         ); break; }
-                case PROPERTY_ID_LABEL:                     { rtl_uString_newFromAscii(&pStr, "Label"                ); break; }
-                case PROPERTY_ID_APPLYFILTER:               { rtl_uString_newFromAscii(&pStr, "ApplyFilter"          ); break; }
-                case PROPERTY_ID_FILTER:                    { rtl_uString_newFromAscii(&pStr, "Filter"               ); break; }
-                case PROPERTY_ID_MASTERFIELDS:              { rtl_uString_newFromAscii(&pStr, "MasterFields"         ); break; }
-                case PROPERTY_ID_DETAILFIELDS:              { rtl_uString_newFromAscii(&pStr, "DetailFields"         ); break; }
-                case PROPERTY_ID_FIELDTYPE:                 { rtl_uString_newFromAscii(&pStr, "FieldType"            ); break; }
-                case PROPERTY_ID_VALUE:                     { rtl_uString_newFromAscii(&pStr, "Value"                ); break; }
-                case PROPERTY_ID_ACTIVE_CONNECTION:         { rtl_uString_newFromAscii(&pStr, "ActiveConnection"     ); break; }
+                case PROPERTY_ID_NAME:                      { rtl_uString_newFromAscii(&pStr,getPROPERTY_NAME()             ); break; }
+                case PROPERTY_ID_TYPE:                      { rtl_uString_newFromAscii(&pStr,getPROPERTY_TYPE()             ); break; }
+                case PROPERTY_ID_TYPENAME:                  { rtl_uString_newFromAscii(&pStr,getPROPERTY_TYPENAME()         ); break; }
+                case PROPERTY_ID_PRECISION:                 { rtl_uString_newFromAscii(&pStr,getPROPERTY_PRECISION()            ); break; }
+                case PROPERTY_ID_SCALE:                     { rtl_uString_newFromAscii(&pStr,getPROPERTY_SCALE()                ); break; }
+                case PROPERTY_ID_ISNULLABLE:                { rtl_uString_newFromAscii(&pStr,getPROPERTY_ISNULLABLE()       ); break; }
+                case PROPERTY_ID_ISAUTOINCREMENT:           { rtl_uString_newFromAscii(&pStr,getPROPERTY_ISAUTOINCREMENT()  ); break; }
+                case PROPERTY_ID_ISROWVERSION:              { rtl_uString_newFromAscii(&pStr,getPROPERTY_ISROWVERSION()     ); break; }
+                case PROPERTY_ID_DESCRIPTION:               { rtl_uString_newFromAscii(&pStr,getPROPERTY_DESCRIPTION()      ); break; }
+                case PROPERTY_ID_DEFAULTVALUE:              { rtl_uString_newFromAscii(&pStr,getPROPERTY_DEFAULTVALUE()     ); break; }
+
+                case PROPERTY_ID_REFERENCEDTABLE:           { rtl_uString_newFromAscii(&pStr,getPROPERTY_REFERENCEDTABLE()  ); break; }
+                case PROPERTY_ID_UPDATERULE:                { rtl_uString_newFromAscii(&pStr,getPROPERTY_UPDATERULE()       ); break; }
+                case PROPERTY_ID_DELETERULE:                { rtl_uString_newFromAscii(&pStr,getPROPERTY_DELETERULE()       ); break; }
+                case PROPERTY_ID_CATALOG:                   { rtl_uString_newFromAscii(&pStr,getPROPERTY_CATALOG()          ); break; }
+                case PROPERTY_ID_ISUNIQUE:                  { rtl_uString_newFromAscii(&pStr,getPROPERTY_ISUNIQUE()         ); break; }
+                case PROPERTY_ID_ISPRIMARYKEYINDEX:         { rtl_uString_newFromAscii(&pStr,getPROPERTY_ISPRIMARYKEYINDEX()    ); break; }
+                case PROPERTY_ID_ISCLUSTERED:               { rtl_uString_newFromAscii(&pStr,getPROPERTY_ISCLUSTERED()          ); break; }
+                case PROPERTY_ID_ISASCENDING:               { rtl_uString_newFromAscii(&pStr,getPROPERTY_ISASCENDING()          ); break; }
+                case PROPERTY_ID_SCHEMANAME:                { rtl_uString_newFromAscii(&pStr,getPROPERTY_SCHEMANAME()           ); break; }
+                case PROPERTY_ID_CATALOGNAME:               { rtl_uString_newFromAscii(&pStr,getPROPERTY_CATALOGNAME()          ); break; }
+
+                case PROPERTY_ID_COMMAND:                   { rtl_uString_newFromAscii(&pStr,getPROPERTY_COMMAND()              ); break; }
+                case PROPERTY_ID_CHECKOPTION:               { rtl_uString_newFromAscii(&pStr,getPROPERTY_CHECKOPTION()          ); break; }
+                case PROPERTY_ID_PASSWORD:                  { rtl_uString_newFromAscii(&pStr,getPROPERTY_PASSWORD()             ); break; }
+                case PROPERTY_ID_RELATEDCOLUMN:             { rtl_uString_newFromAscii(&pStr,getPROPERTY_RELATEDCOLUMN()        ); break;  }
+
+                case PROPERTY_ID_FUNCTION:                  { rtl_uString_newFromAscii(&pStr,getPROPERTY_FUNCTION()             ); break; }
+                case PROPERTY_ID_AGGREGATEFUNCTION:          { rtl_uString_newFromAscii(&pStr,getPROPERTY_AGGREGATEFUNCTION()   ); break; }
+                case PROPERTY_ID_TABLENAME:                 { rtl_uString_newFromAscii(&pStr,getPROPERTY_TABLENAME()            ); break; }
+                case PROPERTY_ID_REALNAME:                  { rtl_uString_newFromAscii(&pStr,getPROPERTY_REALNAME()             ); break; }
+                case PROPERTY_ID_DBASEPRECISIONCHANGED:     { rtl_uString_newFromAscii(&pStr,getPROPERTY_DBASEPRECISIONCHANGED()); break; }
+                case PROPERTY_ID_ISCURRENCY:                { rtl_uString_newFromAscii(&pStr,getPROPERTY_ISCURRENCY()           ); break; }
+                case PROPERTY_ID_ISBOOKMARKABLE:            { rtl_uString_newFromAscii(&pStr,getPROPERTY_ISBOOKMARKABLE()       ); break; }
+                case PROPERTY_ID_HY010:                     { rtl_uString_newFromAscii(&pStr,getSQLSTATE_SEQUENCE()             ); break; }
+                case PROPERTY_ID_DELIMITER:                 { rtl_uString_newFromAscii(&pStr,getSTR_DELIMITER()                 ); break; }
+                case PROPERTY_ID_FORMATKEY:                 { rtl_uString_newFromAscii(&pStr,getPROPERTY_FORMATKEY()            ); break; }
+                case PROPERTY_ID_LOCALE:                    { rtl_uString_newFromAscii(&pStr,getPROPERTY_LOCALE()               ); break; }
+                case PROPERTY_ID_AUTOINCREMENTCREATION:     { rtl_uString_newFromAscii(&pStr,getPROPERTY_AUTOINCREMENTCREATION()); break; }
+                case PROPERTY_ID_PRIVILEGES:                { rtl_uString_newFromAscii(&pStr,getPROPERTY_PRIVILEGES()           ); break; }
+                case PROPERTY_ID_HAVINGCLAUSE:              { rtl_uString_newFromAscii(&pStr,getPROPERTY_ID_HAVINGCLAUSE()      ); break; }
+                case PROPERTY_ID_ISSIGNED:                  { rtl_uString_newFromAscii(&pStr,getPROPERTY_ID_ISSIGNED()          ); break; }
+                case PROPERTY_ID_ISSEARCHABLE:              { rtl_uString_newFromAscii(&pStr,getPROPERTY_ID_ISSEARCHABLE()      ); break; }
+                case PROPERTY_ID_LABEL:                     { rtl_uString_newFromAscii(&pStr,getPROPERTY_ID_LABEL()             ); break; }
+                case PROPERTY_ID_APPLYFILTER:               { rtl_uString_newFromAscii(&pStr,getPROPERTY_ID_APPLYFILTER()       ); break; }
+                case PROPERTY_ID_FILTER:                    { rtl_uString_newFromAscii(&pStr,getPROPERTY_ID_FILTER()            ); break; }
+                case PROPERTY_ID_MASTERFIELDS:              { rtl_uString_newFromAscii(&pStr,getPROPERTY_ID_MASTERFIELDS()      ); break; }
+                case PROPERTY_ID_DETAILFIELDS:              { rtl_uString_newFromAscii(&pStr,getPROPERTY_ID_DETAILFIELDS()      ); break; }
+                case PROPERTY_ID_FIELDTYPE:                 { rtl_uString_newFromAscii(&pStr,getPROPERTY_ID_FIELDTYPE()         ); break; }
+                case PROPERTY_ID_VALUE:                     { rtl_uString_newFromAscii(&pStr,getPROPERTY_ID_VALUE()             ); break; }
+                case PROPERTY_ID_ACTIVE_CONNECTION:         { rtl_uString_newFromAscii(&pStr,getPROPERTY_ID_ACTIVE_CONNECTION() ); break; }
             }
             m_aPropertyMap[_nIndex] = pStr;
             return pStr ? OUString(pStr) : OUString();
diff --git a/connectivity/source/drivers/mork/MCatalog.cxx b/connectivity/source/drivers/mork/MCatalog.cxx
index 3602b3c..65abe02 100644
--- a/connectivity/source/drivers/mork/MCatalog.cxx
+++ b/connectivity/source/drivers/mork/MCatalog.cxx
@@ -92,7 +92,8 @@ Reference< XNameAccess > SAL_CALL OCatalog::getTables(  ) throw(RuntimeException
 
     try
     {
-        refreshTables();
+        if(!m_pTables || m_pConnection->getForceLoadTables())
+            refreshTables();
     }
     catch( const RuntimeException& )
     {
diff --git a/connectivity/source/drivers/mork/MConnection.hxx b/connectivity/source/drivers/mork/MConnection.hxx
index 397102d..1a29491 100644
--- a/connectivity/source/drivers/mork/MConnection.hxx
+++ b/connectivity/source/drivers/mork/MConnection.hxx
@@ -102,6 +102,8 @@ namespace connectivity
 
             static OUString getDriverImplementationName();
 
+            bool getForceLoadTables() {return true;}
+
             // Added to enable me to use SQLInterpreter which requires an
             // XNameAccess i/f to access tables.
             ::com::sun::star::uno::Reference< ::com::sun::star::sdbcx::XTablesSupplier > SAL_CALL createCatalog();
diff --git a/connectivity/source/drivers/mork/MQueryHelper.cxx b/connectivity/source/drivers/mork/MQueryHelper.cxx
index 36f8a2e..08e5447 100644
--- a/connectivity/source/drivers/mork/MQueryHelper.cxx
+++ b/connectivity/source/drivers/mork/MQueryHelper.cxx
@@ -144,6 +144,11 @@ sal_Int32 MQueryHelper::getResultCount() const
 
 
 
+bool MQueryHelper::queryComplete() const
+{
+    return true;
+}
+
 bool MQueryHelper::checkRowAvailable( sal_Int32 nDBRow )
 {
 /*
diff --git a/connectivity/source/drivers/mork/MQueryHelper.hxx b/connectivity/source/drivers/mork/MQueryHelper.hxx
index f12a7c2..42a2c93 100644
--- a/connectivity/source/drivers/mork/MQueryHelper.hxx
+++ b/connectivity/source/drivers/mork/MQueryHelper.hxx
@@ -199,6 +199,7 @@ namespace connectivity
             void                       reset();
             MQueryHelperResultEntry*   getByIndex( sal_uInt32 nRow );
             bool                       isError() const;
+            bool                       queryComplete() const;
             sal_Int32                  getResultCount() const;
             bool                       checkRowAvailable( sal_Int32 nDBRow );
             bool                       getRowValue( ORowSetValue& rValue, sal_Int32 nDBRow,const OUString& aDBColumnName, sal_Int32 nType );
diff --git a/connectivity/source/drivers/mork/MResultSet.cxx b/connectivity/source/drivers/mork/MResultSet.cxx
index 3adaddd..b33cb54 100644
--- a/connectivity/source/drivers/mork/MResultSet.cxx
+++ b/connectivity/source/drivers/mork/MResultSet.cxx
@@ -332,6 +332,35 @@ bool OResultSet::fetchCurrentRow( ) throw(SQLException, RuntimeException)
 }
 
 
+bool OResultSet::pushCard(sal_uInt32 /*cardNumber*/) throw(SQLException, RuntimeException)
+{
+    return true;
+/*
+    if (cardNumber == 0)
+        return sal_True;
+    // Check whether we are storing the updated row
+    if ( (m_aRow->get())[0].isNull() || (sal_Int32)(m_aRow->get())[0] != (sal_Int32)cardNumber )
+        return sal_False;
+
+    sal_Int32 nCount = m_aColumnNames.getLength();
+    m_aQuery.setRowStates(cardNumber,m_RowStates);
+    for( sal_Int32 i = 1; i <= nCount; i++ )
+    {
+        if ( (m_aRow->get())[i].isBound() )
+        {
+
+            // Everything in the addressbook is a string!
+
+            if ( !m_aQuery.setRowValue( (m_aRow->get())[i], cardNumber, m_aColumnNames[i-1], DataType::VARCHAR ))
+            {
+                m_pStatement->getOwnConnection()->throwSQLException( m_aQuery.getError(), *this );
+            }
+        }
+    }
+    return sal_True;
+*/
+}
+
 bool OResultSet::fetchRow(sal_Int32 cardNumber,bool bForceReload) throw(SQLException, RuntimeException)
 {
     SAL_INFO("connectivity.mork", "cardNumber = " << cardNumber);
@@ -340,6 +369,13 @@ bool OResultSet::fetchRow(sal_Int32 cardNumber,bool bForceReload) throw(SQLExcep
         // Check whether we've already fetched the row...
         if ( !(m_aRow->get())[0].isNull() && (sal_Int32)(m_aRow->get())[0] == (sal_Int32)cardNumber )
             return true;
+        //Check whether the old row has been changed
+        if (cardNumber == m_nUpdatedRow)
+        {
+            //write back the changes first
+            if (!pushCard(cardNumber))  //error write back the changes
+                throw SQLException();
+        }
     }
 //    else
 //        m_aQuery.resyncRow(cardNumber);
@@ -430,7 +466,7 @@ sal_Bool SAL_CALL OResultSet::isAfterLast(  ) throw(SQLException, RuntimeExcepti
 
     OSL_TRACE("In/Out: OResultSet::isAfterLast" );
 //    return sal_True;
-    return m_nRowPos > currentRowCount();
+    return m_nRowPos > currentRowCount() && m_aQueryHelper.queryComplete();
 }
 
 sal_Bool SAL_CALL OResultSet::isFirst(  ) throw(SQLException, RuntimeException, std::exception)
@@ -448,7 +484,7 @@ sal_Bool SAL_CALL OResultSet::isLast(  ) throw(SQLException, RuntimeException, s
 
     OSL_TRACE("In/Out: OResultSet::isLast" );
 //    return sal_True;
-    return m_nRowPos == currentRowCount();
+    return m_nRowPos == currentRowCount() && m_aQueryHelper.queryComplete();
 }
 
 void SAL_CALL OResultSet::beforeFirst(  ) throw(SQLException, RuntimeException, std::exception)
@@ -1222,6 +1258,8 @@ void SAL_CALL OResultSet::executeQuery() throw( ::com::sun::star::sdbc::SQLExcep
 
                     OSL_TRACE("Query is to be sorted");
 
+                    OSL_ENSURE( m_aQueryHelper.queryComplete(), "Query not complete!!");
+
                     OSortIndex aSortIndex(eKeyType,m_aOrderbyAscending);
 
                     OSL_TRACE("OrderbyColumnNumber->size() = %zu",m_aOrderbyColumnNumber.size());
@@ -1407,26 +1445,28 @@ bool OResultSet::validRow( sal_uInt32 nRow)
 {
     sal_Int32  nNumberOfRecords = m_aQueryHelper.getResultCount();
 
+    while ( nRow > (sal_uInt32)nNumberOfRecords && !m_aQueryHelper.queryComplete() ) {
 #if OSL_DEBUG_LEVEL > 0
-    OSL_TRACE("validRow: waiting...");
+            OSL_TRACE("validRow: waiting...");
 #endif
-    if (m_aQueryHelper.checkRowAvailable( nRow ) == false)
-    {
-        SAL_INFO(
-            "connectivity.mork",
-            "validRow(" << nRow << "): return False");
-        return false;
-    }
+            if (m_aQueryHelper.checkRowAvailable( nRow ) == false)
+            {
+                SAL_INFO(
+                    "connectivity.mork",
+                    "validRow(" << nRow << "): return False");
+                return false;
+            }
 
-    if ( m_aQueryHelper.hadError() )
-    {
-        m_pStatement->getOwnConnection()->throwSQLException( m_aQueryHelper.getError(), *this );
-    }
+            if ( m_aQueryHelper.hadError() )
+            {
+                m_pStatement->getOwnConnection()->throwSQLException( m_aQueryHelper.getError(), *this );
+            }
 
-    nNumberOfRecords = m_aQueryHelper.getResultCount();
+            nNumberOfRecords = m_aQueryHelper.getResultCount();
+    }
 
     if (( nRow == 0 ) ||
-        ( nRow > (sal_uInt32)nNumberOfRecords) ){
+        ( nRow > (sal_uInt32)nNumberOfRecords && m_aQueryHelper.queryComplete()) ){
         SAL_INFO("connectivity.mork", "validRow(" << nRow << "): return False");
         return false;
     }
diff --git a/connectivity/source/drivers/mork/MResultSet.hxx b/connectivity/source/drivers/mork/MResultSet.hxx
index d40fe68..6422c04 100644
--- a/connectivity/source/drivers/mork/MResultSet.hxx
+++ b/connectivity/source/drivers/mork/MResultSet.hxx
@@ -266,6 +266,8 @@ protected:
                                                           ::com::sun::star::uno::RuntimeException);
             bool fetchCurrentRow() throw( ::com::sun::star::sdbc::SQLException,
                                                           ::com::sun::star::uno::RuntimeException);
+            bool pushCard(sal_uInt32 rowIndex) throw( ::com::sun::star::sdbc::SQLException,
+                                                          ::com::sun::star::uno::RuntimeException);
             bool validRow( sal_uInt32 nRow );
             bool seekRow( eRowPosition pos, sal_Int32 nOffset = 0 );
             sal_Int32 deletedCount();
diff --git a/connectivity/source/drivers/mork/MResultSetMetaData.cxx b/connectivity/source/drivers/mork/MResultSetMetaData.cxx
index b014c7a..2674658 100644
--- a/connectivity/source/drivers/mork/MResultSetMetaData.cxx
+++ b/connectivity/source/drivers/mork/MResultSetMetaData.cxx
@@ -176,7 +176,7 @@ sal_Bool SAL_CALL OResultSetMetaData::isReadOnly( sal_Int32 column ) throw(SQLEx
     bool bReadOnly = (m_xColumns->get())[column-1]->getPropertySetInfo()->hasPropertyByName(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_FUNCTION)) &&
         ::cppu::any2bool((m_xColumns->get())[column-1]->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_FUNCTION)));
 
-    return m_bReadOnly || bReadOnly;
+    return m_bReadOnly || bReadOnly || m_pTable->isReadOnly();
 }
 
 
diff --git a/connectivity/source/drivers/mork/MStatement.cxx b/connectivity/source/drivers/mork/MStatement.cxx
index e6be4a9..e0766ce 100644
--- a/connectivity/source/drivers/mork/MStatement.cxx
+++ b/connectivity/source/drivers/mork/MStatement.cxx
@@ -140,6 +140,54 @@ void SAL_CALL OCommonStatement::close(  ) throw(SQLException, RuntimeException,
 }
 
 
+
+void OCommonStatement::createTable( ) throw ( SQLException, RuntimeException )
+{
+/*
+    if(m_pParseTree)
+    {
+        ::rtl::Reference<connectivity::OSQLColumns> xCreateColumn;
+        if (m_pSQLIterator->getStatementType() == SQL_STATEMENT_CREATE_TABLE)
+        {
+            const OSQLTables& xTabs = m_pSQLIterator->getTables();
+            OSL_ENSURE( !xTabs.empty(), "Need a Table");
+            OUString ouTableName=xTabs.begin()->first;
+            xCreateColumn     = m_pSQLIterator->getCreateColumns();
+            OSL_ENSURE(xCreateColumn.is(), "Need the Columns!!");
+
+            const OColumnAlias& aColumnAlias = m_pConnection->getColumnAlias();
+
+            OSQLColumns::Vector::const_iterator aIter = xCreateColumn->get().begin();
+            const OUString sProprtyName = OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_NAME);
+            OUString sName;
+            for (sal_Int32 i = 1; aIter != xCreateColumn->get().end();++aIter, i++)
+            {
+                (*aIter)->getPropertyValue(sProprtyName) >>= sName;
+                if ( !aColumnAlias.hasAlias( sName ) )
+                {
+
+                    const OUString sError( getOwnConnection()->getResources().getResourceStringWithSubstitution(
+                            STR_INVALID_COLUMNNAME,
+                            "$columnname$", sName
+                         ) );
+                    ::dbtools::throwGenericSQLException(sError,*this);
+                }
+            }
+            MDatabaseMetaDataHelper     _aDbHelper;
+            if (!_aDbHelper.NewAddressBook(m_pConnection,ouTableName))
+            {
+                getOwnConnection()->throwSQLException( _aDbHelper.getError(), *this );
+            }
+            m_pSQLIterator.reset( new ::connectivity::OSQLParseTreeIterator(
+                m_pConnection, m_pConnection->createCatalog()->getTables(), m_aParser, NULL ) );
+        }
+
+    }
+    else
+        getOwnConnection()->throwSQLException( STR_QUERY_TOO_COMPLEX, *this );
+*/
+}
+
 OCommonStatement::StatementType OCommonStatement::parseSql( const OUString& sql , bool bAdjusted)
     throw ( SQLException, RuntimeException )
 {
@@ -194,6 +242,7 @@ OCommonStatement::StatementType OCommonStatement::parseSql( const OUString& sql
             return eSelect;
 
         case SQL_STATEMENT_CREATE_TABLE:
+            createTable();
             return eCreateTable;
 
         default:
diff --git a/connectivity/source/drivers/mork/MStatement.hxx b/connectivity/source/drivers/mork/MStatement.hxx
index 3476d9b..08b4c56 100644
--- a/connectivity/source/drivers/mork/MStatement.hxx
+++ b/connectivity/source/drivers/mork/MStatement.hxx
@@ -144,6 +144,9 @@ namespace connectivity
             void         analyseSQL();
             void         setOrderbyColumn( connectivity::OSQLParseNode* pColumnRef,
                                            connectivity::OSQLParseNode* pAscendingDescending);
+            void createTable(  ) throw (
+                        ::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException );
+
         public:
             // other methods
             OConnection* getOwnConnection() const { return m_pConnection;}
diff --git a/connectivity/source/drivers/mork/MTable.hxx b/connectivity/source/drivers/mork/MTable.hxx
index 454364b..3909051 100644
--- a/connectivity/source/drivers/mork/MTable.hxx
+++ b/connectivity/source/drivers/mork/MTable.hxx
@@ -43,6 +43,8 @@ namespace connectivity
 
             OConnection* getConnection() { return m_pConnection;}
 
+            bool isReadOnly() const { return false; }
+
             OUString getTableName() const { return m_Name; }
             OUString getSchema() const { return m_SchemaName; }
 
diff --git a/connectivity/source/drivers/odbc/ODatabaseMetaDataResultSet.cxx b/connectivity/source/drivers/odbc/ODatabaseMetaDataResultSet.cxx
index f5ffa38..36d7637 100644
--- a/connectivity/source/drivers/odbc/ODatabaseMetaDataResultSet.cxx
+++ b/connectivity/source/drivers/odbc/ODatabaseMetaDataResultSet.cxx
@@ -698,6 +698,27 @@ Any SAL_CALL ODatabaseMetaDataResultSet::getWarnings(  ) throw(SQLException, Run
     return Any();
 }
 
+sal_Int32 ODatabaseMetaDataResultSet::getResultSetConcurrency() const throw(SQLException, RuntimeException)
+{
+    return ResultSetConcurrency::READ_ONLY;
+}
+
+sal_Int32 ODatabaseMetaDataResultSet::getResultSetType() const throw(SQLException, RuntimeException)
+{
+    return ResultSetType::FORWARD_ONLY;
+}
+
+sal_Int32 ODatabaseMetaDataResultSet::getFetchDirection() const throw(SQLException, RuntimeException)
+{
+    return FetchDirection::FORWARD;
+}
+
+sal_Int32 ODatabaseMetaDataResultSet::getFetchSize() const throw(SQLException, RuntimeException)
+{
+    sal_Int32 nValue=1;
+    return nValue;
+}
+
 OUString ODatabaseMetaDataResultSet::getCursorName() const throw(SQLException, RuntimeException)
 {
     return OUString();
diff --git a/connectivity/source/drivers/odbc/OResultSet.cxx b/connectivity/source/drivers/odbc/OResultSet.cxx
index 165ff0b..dc665ee 100644
--- a/connectivity/source/drivers/odbc/OResultSet.cxx
+++ b/connectivity/source/drivers/odbc/OResultSet.cxx
@@ -1327,6 +1327,11 @@ sal_Int32 OResultSet::getResultSetType() const
     return nValue;
 }
 
+sal_Int32 OResultSet::getFetchDirection() const
+{
+    return FetchDirection::FORWARD;
+}
+
 sal_Int32 OResultSet::getFetchSize() const
 {
     return getStmtOption<SQLULEN, SQL_IS_UINTEGER>(SQL_ATTR_ROW_ARRAY_SIZE);
diff --git a/connectivity/source/drivers/postgresql/pq_databasemetadata.cxx b/connectivity/source/drivers/postgresql/pq_databasemetadata.cxx
index b243dfa..d334dca1 100644
--- a/connectivity/source/drivers/postgresql/pq_databasemetadata.cxx
+++ b/connectivity/source/drivers/postgresql/pq_databasemetadata.cxx
@@ -124,6 +124,11 @@ std::vector
 #define DEFERRABILITY_INITIALLY_IMMEDIATE 6
 #define DEFERRABILITY_NONE                7
 
+void DatabaseMetaData::checkClosed()
+        throw (SQLException, RuntimeException)
+{
+}
+
 DatabaseMetaData::DatabaseMetaData(
     const ::rtl::Reference< RefCountedMutex > & refMutex,
     const ::com::sun::star::uno::Reference< com::sun::star::sdbc::XConnection >  & origin,
@@ -1105,6 +1110,7 @@ sal_Bool DatabaseMetaData::dataDefinitionIgnoredInTransactions(  ) throw (SQLExc
 // LEM TODO: implement
 // LEM TODO: at least fake the columns, even if no row.
     MutexGuard guard( m_refMutex->mutex );
+    checkClosed();
     return new SequenceResultSet(
         m_refMutex, *this, Sequence< OUString >(), Sequence< Sequence< Any > > (), m_pSettings->tc );
 }
@@ -1117,6 +1123,7 @@ sal_Bool DatabaseMetaData::dataDefinitionIgnoredInTransactions(  ) throw (SQLExc
 {
     (void) catalog; (void) schemaPattern; (void) procedureNamePattern; (void) columnNamePattern;
     MutexGuard guard( m_refMutex->mutex );
+    checkClosed();
 // LEM TODO: implement
 // LEM TODO: at least fake the columns, even if no row.
     return new SequenceResultSet(
@@ -1134,6 +1141,7 @@ sal_Bool DatabaseMetaData::dataDefinitionIgnoredInTransactions(  ) throw (SQLExc
     Statics &statics = getStatics();
 
     MutexGuard guard( m_refMutex->mutex );
+    checkClosed();
 
     if( isLog( m_pSettings, LogLevel::INFO ) )
     {
@@ -1251,6 +1259,7 @@ struct SortInternalSchemasLastAndPublicFirst
     throw (SQLException, RuntimeException, std::exception)
 {
     MutexGuard guard( m_refMutex->mutex );
+    checkClosed();
 
     if( isLog( m_pSettings, LogLevel::INFO ) )
     {
@@ -1288,6 +1297,7 @@ struct SortInternalSchemasLastAndPublicFirst
     // LEM TODO: return the current catalog like JDBC driver?
     //           at least fake the columns, even if no content
     MutexGuard guard( m_refMutex->mutex );
+    checkClosed();
     return new SequenceResultSet(
         m_refMutex, *this, Sequence< OUString >(), Sequence< Sequence< Any > > (), m_pSettings->tc );
 }
@@ -1297,6 +1307,7 @@ struct SortInternalSchemasLastAndPublicFirst
 {
     // LEM TODO: this can be made dynamic, see JDBC driver
     MutexGuard guard( m_refMutex->mutex );
+    checkClosed();
     return new SequenceResultSet(
         m_refMutex, *this, getStatics().tableTypeNames, getStatics().tableTypeData,
         m_pSettings->tc );
@@ -1460,6 +1471,7 @@ static void columnMetaData2DatabaseTypeDescription(
 
     // continue !
     MutexGuard guard( m_refMutex->mutex );
+    checkClosed();
 
     if( isLog( m_pSettings, LogLevel::INFO ) )
     {
@@ -1643,6 +1655,7 @@ static void columnMetaData2DatabaseTypeDescription(
     (void) catalog;
 
     MutexGuard guard( m_refMutex->mutex );
+    checkClosed();
 
     if( isLog( m_pSettings, LogLevel::INFO ) )
     {
@@ -1673,6 +1686,7 @@ static void columnMetaData2DatabaseTypeDescription(
 {
     (void) catalog;
     MutexGuard guard( m_refMutex->mutex );
+    checkClosed();
 
     if( isLog( m_pSettings, LogLevel::INFO ) )
     {
@@ -1703,6 +1717,7 @@ static void columnMetaData2DatabaseTypeDescription(
     (void) catalog; (void) schema; (void) table; (void) scope; (void) nullable;
     //LEM TODO: implement! See JDBC driver
     MutexGuard guard( m_refMutex->mutex );
+    checkClosed();
     return new SequenceResultSet(
         m_refMutex, *this, Sequence< OUString >(), Sequence< Sequence< Any > > (), m_pSettings->tc );
 }
@@ -1715,6 +1730,7 @@ static void columnMetaData2DatabaseTypeDescription(
     (void) catalog; (void) schema; (void) table;
     //LEM TODO: implement! See JDBC driver
     MutexGuard guard( m_refMutex->mutex );
+    checkClosed();
     return new SequenceResultSet(
         m_refMutex, *this, Sequence< OUString >(), Sequence< Sequence< Any > > (), m_pSettings->tc );
 }
@@ -1727,6 +1743,7 @@ static void columnMetaData2DatabaseTypeDescription(
     (void) catalog;
     //LEM TODO: review
     MutexGuard guard( m_refMutex->mutex );
+    checkClosed();
 
 //        1.  TABLE_CAT string => table catalog (may be NULL )
 //        2. TABLE_SCHEM string => table schema (may be NULL )
@@ -2290,6 +2307,7 @@ static void pgTypeInfo2ResultSet(
 {
     // Note: Indexes start at 0 (in the API doc, they start at 1)
     MutexGuard guard( m_refMutex->mutex );
+    checkClosed();
 
     if( isLog( m_pSettings, LogLevel::INFO ) )
     {
@@ -2358,6 +2376,7 @@ static sal_Int32 seqContains( const Sequence< sal_Int32 > &seq, sal_Int32 value
     (void) catalog; (void) approximate;
     //LEM TODO: review
     MutexGuard guard( m_refMutex->mutex );
+    checkClosed();
 
     /*
        1. TABLE_CAT string -> table catalog (may be NULL )
@@ -2548,6 +2567,7 @@ sal_Bool DatabaseMetaData::supportsBatchUpdates(  ) throw (SQLException, Runtime
     (void) catalog; (void) schemaPattern; (void) typeNamePattern; (void) types;
     //LEM TODO: implement! See JDBC driver
     MutexGuard guard( m_refMutex->mutex );
+    checkClosed();
     return new SequenceResultSet(
         m_refMutex, *this, Sequence< OUString >(), Sequence< Sequence< Any > > (), m_pSettings->tc );
 }
diff --git a/connectivity/source/drivers/postgresql/pq_databasemetadata.hxx b/connectivity/source/drivers/postgresql/pq_databasemetadata.hxx
index a61ac4a..9a54a20 100644
--- a/connectivity/source/drivers/postgresql/pq_databasemetadata.hxx
+++ b/connectivity/source/drivers/postgresql/pq_databasemetadata.hxx
@@ -56,6 +56,7 @@ class DatabaseMetaData :
     ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XPreparedStatement > m_getTablePrivs_stmt;
     ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XPreparedStatement > m_getColumnPrivs_stmt;
 
+    void checkClosed() throw (::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
     sal_Int32 getIntSetting(const OUString& settingName) throw (::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
     sal_Int32 getMaxIndexKeys()  throw (::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
     sal_Int32 getMaxNameLength() throw (::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
diff --git a/connectivity/source/drivers/postgresql/pq_resultsetmetadata.cxx b/connectivity/source/drivers/postgresql/pq_resultsetmetadata.cxx
index 406d31b..1e57850 100644
--- a/connectivity/source/drivers/postgresql/pq_resultsetmetadata.cxx
+++ b/connectivity/source/drivers/postgresql/pq_resultsetmetadata.cxx
@@ -333,6 +333,7 @@ sal_Int32 ResultSetMetaData::getColumnDisplaySize( sal_Int32 column )
     throw (SQLException, RuntimeException, std::exception)
 {
     MutexGuard guard( m_refMutex->mutex );
+    checkClosed();
     checkColumnIndex( column );
     return m_colDesc[column-1].displaySize;
 }
@@ -346,6 +347,7 @@ OUString ResultSetMetaData::getColumnLabel( sal_Int32 column )
 OUString ResultSetMetaData::getColumnName( sal_Int32 column ) throw (SQLException, RuntimeException, std::exception)
 {
     MutexGuard guard( m_refMutex->mutex );
+    checkClosed();
     checkColumnIndex( column );
 
     return m_colDesc[column-1].name;
@@ -361,6 +363,7 @@ sal_Int32 ResultSetMetaData::getPrecision( sal_Int32 column )
     throw (SQLException, RuntimeException, std::exception)
 {
     MutexGuard guard( m_refMutex->mutex );
+    checkClosed();
     checkColumnIndex( column );
     return m_colDesc[column-1].precision;
 }
@@ -369,6 +372,7 @@ sal_Int32 ResultSetMetaData::getScale( sal_Int32 column )
     throw (SQLException, RuntimeException, std::exception)
 {
     MutexGuard guard( m_refMutex->mutex );
+    checkClosed();
     checkColumnIndex( column );
     return m_colDesc[column-1].scale;
 }
@@ -454,6 +458,12 @@ OUString ResultSetMetaData::getColumnServiceName( sal_Int32 column )
     return OUString();
 }
 
+void ResultSetMetaData::checkClosed()
+    throw (::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException)
+{
+    // we never close
+}
+
 void ResultSetMetaData::checkColumnIndex(sal_Int32 columnIndex)
     throw (::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException)
 {
diff --git a/connectivity/source/drivers/postgresql/pq_resultsetmetadata.hxx b/connectivity/source/drivers/postgresql/pq_resultsetmetadata.hxx
index e70d5b0..6dc53f0 100644
--- a/connectivity/source/drivers/postgresql/pq_resultsetmetadata.hxx
+++ b/connectivity/source/drivers/postgresql/pq_resultsetmetadata.hxx
@@ -81,6 +81,8 @@ class ResultSetMetaData :
 
     sal_Int32 m_colCount;
 
+    void checkClosed()
+        throw (::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
     void checkColumnIndex( sal_Int32 columnIndex )
         throw (::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
     void checkTable();
diff --git a/connectivity/source/inc/odbc/ODatabaseMetaDataResultSet.hxx b/connectivity/source/inc/odbc/ODatabaseMetaDataResultSet.hxx
index 74b507b..4b7bbd4 100644
--- a/connectivity/source/inc/odbc/ODatabaseMetaDataResultSet.hxx
+++ b/connectivity/source/inc/odbc/ODatabaseMetaDataResultSet.hxx
@@ -20,9 +20,6 @@
 #ifndef INCLUDED_CONNECTIVITY_SOURCE_INC_ODBC_ODATABASEMETADATARESULTSET_HXX
 #define INCLUDED_CONNECTIVITY_SOURCE_INC_ODBC_ODATABASEMETADATARESULTSET_HXX
 
-#include <com/sun/star/sdbc/FetchDirection.hpp>
-#include <com/sun/star/sdbc/ResultSetConcurrency.hpp>
-#include <com/sun/star/sdbc/ResultSetType.hpp>
 #include <com/sun/star/sdbc/XResultSet.hpp>
 #include <com/sun/star/sdbc/XRow.hpp>
 #include <com/sun/star/sdbc/XResultSetMetaDataSupplier.hpp>
@@ -83,10 +80,10 @@ namespace connectivity
 
             // set the columncount of the driver
             void checkColumnCount();
-            static sal_Int32 getResultSetConcurrency() { return css::sdbc::ResultSetConcurrency::READ_ONLY; }
-            static sal_Int32 getResultSetType()  { return css::sdbc::ResultSetType::FORWARD_ONLY; }
-            static sal_Int32 getFetchDirection() { return css::sdbc::FetchDirection::FORWARD; }
-            static sal_Int32 getFetchSize()      { return 1; }
+            sal_Int32 getResultSetConcurrency() const throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
+            sal_Int32 getResultSetType()        const throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
+            sal_Int32 getFetchDirection()       const throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
+            sal_Int32 getFetchSize()            const throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
             OUString getCursorName()     const throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
             SWORD                               impl_getColumnType_nothrow(sal_Int32 columnIndex);
 
diff --git a/connectivity/source/inc/odbc/OResultSet.hxx b/connectivity/source/inc/odbc/OResultSet.hxx
index 104f617..a423e73 100644
--- a/connectivity/source/inc/odbc/OResultSet.hxx
+++ b/connectivity/source/inc/odbc/OResultSet.hxx
@@ -20,7 +20,6 @@
 #ifndef INCLUDED_CONNECTIVITY_SOURCE_INC_ODBC_ORESULTSET_HXX
 #define INCLUDED_CONNECTIVITY_SOURCE_INC_ODBC_ORESULTSET_HXX
 
-#include <com/sun/star/sdbc/FetchDirection.hpp>
 #include <com/sun/star/sdbc/XResultSet.hpp>
 #include <com/sun/star/sdbc/XRow.hpp>
 #include <com/sun/star/sdbc/XResultSetMetaDataSupplier.hpp>
@@ -155,7 +154,7 @@ namespace connectivity
             bool      isBookmarkable()          const;
             sal_Int32 getResultSetConcurrency() const;
             sal_Int32 getResultSetType()        const;
-            static sal_Int32 getFetchDirection() { return css::sdbc::FetchDirection::FORWARD; }
+            sal_Int32 getFetchDirection()       const;
             sal_Int32 getFetchSize()            const;
             OUString getCursorName()     const;
             template < typename T, SQLINTEGER BufferLength > T getStmtOption (SQLINTEGER fOption, T dflt = 0) const;


More information about the Libreoffice-commits mailing list