connectivity/source/drivers/component/CDatabaseMetaData.cxx |   24 ++++-----
 connectivity/source/drivers/dbase/DDatabaseMetaData.cxx     |   32 ++++++------
 connectivity/source/drivers/file/FDatabaseMetaData.cxx      |   11 +---
 3 files changed, 33 insertions(+), 34 deletions(-)

New commits:
commit 66b0bc55854ba13b92b6c39b95f3f2d4ef76bf20
Author:     Noel Grandin <[email protected]>
AuthorDate: Fri Mar 10 10:35:33 2023 +0200
Commit:     Noel Grandin <[email protected]>
CommitDate: Fri Mar 10 09:50:16 2023 +0000

    simplify initialisation in *DatabaseMetaData
    
    Change-Id: I1d7e107e22a98489e4d1013e14bb780e20d87c40
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/148594
    Tested-by: Jenkins
    Reviewed-by: Noel Grandin <[email protected]>

diff --git a/connectivity/source/drivers/component/CDatabaseMetaData.cxx 
b/connectivity/source/drivers/component/CDatabaseMetaData.cxx
index b8bbae3d7499..bbd921bca3f6 100644
--- a/connectivity/source/drivers/component/CDatabaseMetaData.cxx
+++ b/connectivity/source/drivers/component/CDatabaseMetaData.cxx
@@ -46,14 +46,12 @@ OComponentDatabaseMetaData::~OComponentDatabaseMetaData()
 
 Reference< XResultSet > OComponentDatabaseMetaData::impl_getTypeInfo_throw(  )
 {
-    ::osl::MutexGuard aGuard( m_aMutex );
-
     rtl::Reference<ODatabaseMetaDataResultSet> pResult = new 
ODatabaseMetaDataResultSet(::connectivity::ODatabaseMetaDataResultSet::eTypeInfo);
 
-    static ODatabaseMetaDataResultSet::ORows aRows;
-    if(aRows.empty())
+    static ODatabaseMetaDataResultSet::ORows aRows = []()
     {
-        aRows.reserve(6);
+        ODatabaseMetaDataResultSet::ORows aTmp;
+        aTmp.reserve(6);
         ODatabaseMetaDataResultSet::ORow aRow
         {
             ODatabaseMetaDataResultSet::getEmptyValue(),
@@ -77,43 +75,45 @@ Reference< XResultSet > 
OComponentDatabaseMetaData::impl_getTypeInfo_throw(  )
             new ORowSetValueDecorator(sal_Int32(10))
         };
 
-        aRows.push_back(aRow);
+        aTmp.push_back(aRow);
 
         aRow[1] = new ORowSetValueDecorator(OUString("DECIMAL"));
         aRow[2] = new ORowSetValueDecorator(DataType::DECIMAL);
         aRow[3] = ODatabaseMetaDataResultSet::get0Value();
         aRow[9] = ODatabaseMetaDataResultSet::getBasicValue();
         aRow[15] = ODatabaseMetaDataResultSet::get0Value();
-        aRows.push_back(aRow);
+        aTmp.push_back(aRow);
 
         aRow[1] = new ORowSetValueDecorator(OUString("BOOL"));
         aRow[2] = new ORowSetValueDecorator(DataType::BIT);
         aRow[3] = new ORowSetValueDecorator(sal_Int32(20));
         aRow[9] = ODatabaseMetaDataResultSet::getBasicValue();
         aRow[15] = new ORowSetValueDecorator(sal_Int32(15));
-        aRows.push_back(aRow);
+        aTmp.push_back(aRow);
 
         aRow[1] = new ORowSetValueDecorator(OUString("DATE"));
         aRow[2] = new ORowSetValueDecorator(DataType::DATE);
         aRow[3] = ODatabaseMetaDataResultSet::get0Value();
         aRow[9] = ODatabaseMetaDataResultSet::getBasicValue();
         aRow[15] = ODatabaseMetaDataResultSet::get0Value();
-        aRows.push_back(aRow);
+        aTmp.push_back(aRow);
 
         aRow[1] = new ORowSetValueDecorator(OUString("TIME"));
         aRow[2] = new ORowSetValueDecorator(DataType::TIME);
         aRow[3] = ODatabaseMetaDataResultSet::get0Value();
         aRow[9] = ODatabaseMetaDataResultSet::getBasicValue();
         aRow[15] = ODatabaseMetaDataResultSet::get0Value();
-        aRows.push_back(aRow);
+        aTmp.push_back(aRow);
 
         aRow[1] = new ORowSetValueDecorator(OUString("TIMESTAMP"));
         aRow[2] = new ORowSetValueDecorator(DataType::TIMESTAMP);
         aRow[3] = ODatabaseMetaDataResultSet::get0Value();
         aRow[9] = ODatabaseMetaDataResultSet::getBasicValue();
         aRow[15] = ODatabaseMetaDataResultSet::get0Value();
-        aRows.push_back(aRow);
-    }
+        aTmp.push_back(aRow);
+
+        return aTmp;
+    }();
 
     pResult->setRows(std::move(aRows));
     return pResult;
diff --git a/connectivity/source/drivers/dbase/DDatabaseMetaData.cxx 
b/connectivity/source/drivers/dbase/DDatabaseMetaData.cxx
index 26c2ad880c04..91a9c66fbdcb 100644
--- a/connectivity/source/drivers/dbase/DDatabaseMetaData.cxx
+++ b/connectivity/source/drivers/dbase/DDatabaseMetaData.cxx
@@ -54,14 +54,12 @@ ODbaseDatabaseMetaData::~ODbaseDatabaseMetaData()
 
 Reference< XResultSet > ODbaseDatabaseMetaData::impl_getTypeInfo_throw(  )
 {
-    ::osl::MutexGuard aGuard( m_aMutex );
-
     rtl::Reference<::connectivity::ODatabaseMetaDataResultSet> pResult = new 
::connectivity::ODatabaseMetaDataResultSet(::connectivity::ODatabaseMetaDataResultSet::eTypeInfo);
 
-    static ODatabaseMetaDataResultSet::ORows aRows;
-    if(aRows.empty())
+    static ODatabaseMetaDataResultSet::ORows aRows = []()
     {
-        aRows.reserve(10);
+        ODatabaseMetaDataResultSet::ORows aTmp;
+        aTmp.reserve(10);
         ODatabaseMetaDataResultSet::ORow aRow
         {
             ODatabaseMetaDataResultSet::getEmptyValue(),
@@ -85,20 +83,20 @@ Reference< XResultSet > 
ODbaseDatabaseMetaData::impl_getTypeInfo_throw(  )
             new ORowSetValueDecorator(sal_Int32(10))
         };
 
-        aRows.push_back(aRow);
+        aTmp.push_back(aRow);
 
         aRow[1] = new ORowSetValueDecorator(OUString("LONGVARCHAR"));
         aRow[2] = new ORowSetValueDecorator(DataType::LONGVARCHAR);
         aRow[3] = new ORowSetValueDecorator(sal_Int32(2147483647));
         aRow[6] = new ORowSetValueDecorator();
         aRow[13] = new ORowSetValueDecorator(OUString("M"));
-        aRows.push_back(aRow);
+        aTmp.push_back(aRow);
 
         aRow[1] = new ORowSetValueDecorator(OUString("DATE"));
         aRow[2] = new ORowSetValueDecorator(DataType::DATE);
         aRow[3] = new ORowSetValueDecorator(sal_Int32(10));
         aRow[13] = new ORowSetValueDecorator(OUString("D"));
-        aRows.push_back(aRow);
+        aTmp.push_back(aRow);
 
         aRow[1] = new ORowSetValueDecorator(OUString("BOOLEAN"));
         aRow[2] = new ORowSetValueDecorator(DataType::BIT);
@@ -108,44 +106,46 @@ Reference< XResultSet > 
ODbaseDatabaseMetaData::impl_getTypeInfo_throw(  )
         aRow[6] = new ORowSetValueDecorator(OUString());
         aRow[9] = ODatabaseMetaDataResultSet::getBasicValue();
         aRow[13] = new ORowSetValueDecorator(OUString("L"));
-        aRows.push_back(aRow);
+        aTmp.push_back(aRow);
 
         aRow[1] = new ORowSetValueDecorator(OUString("DOUBLE"));
         aRow[2] = new ORowSetValueDecorator(DataType::DOUBLE);
         aRow[3] = new ORowSetValueDecorator(sal_Int32(8));
         aRow[13] = new ORowSetValueDecorator(OUString("B"));
-        aRows.push_back(aRow);
+        aTmp.push_back(aRow);
 
         aRow[11] = new ORowSetValueDecorator(ORowSetValue(true));
         aRow[13] = new ORowSetValueDecorator(OUString("Y"));
-        aRows.push_back(aRow);
+        aTmp.push_back(aRow);
 
         aRow[1] = new ORowSetValueDecorator(OUString("TIMESTAMP"));
         aRow[2] = new ORowSetValueDecorator(DataType::TIMESTAMP);
         aRow[11] = new ORowSetValueDecorator(ORowSetValue(false));
         aRow[13] = new ORowSetValueDecorator(OUString("T"));
-        aRows.push_back(aRow);
+        aTmp.push_back(aRow);
 
         aRow[1] = new ORowSetValueDecorator(OUString("INTEGER"));
         aRow[2] = new ORowSetValueDecorator(DataType::INTEGER);
         aRow[3] = new ORowSetValueDecorator(sal_Int32(10));
         aRow[13] = new ORowSetValueDecorator(OUString("I"));
-        aRows.push_back(aRow);
+        aTmp.push_back(aRow);
 
         aRow[1] = new ORowSetValueDecorator(OUString("DECIMAL"));
         aRow[2] = new ORowSetValueDecorator(DataType::DECIMAL);
         aRow[3] = new ORowSetValueDecorator(sal_Int32(20));
         aRow[6] = new ORowSetValueDecorator(OUString("length,scale"));
         aRow[13] = new ORowSetValueDecorator(OUString("F"));
-        aRows.push_back(aRow);
+        aTmp.push_back(aRow);
 
         aRow[1] = new ORowSetValueDecorator(OUString("NUMERIC"));
         aRow[2] = new ORowSetValueDecorator(DataType::DECIMAL);
         aRow[3] = new ORowSetValueDecorator(sal_Int32(16));
         aRow[13] = new ORowSetValueDecorator(OUString("N"));
         aRow[15] = new ORowSetValueDecorator(sal_Int32(16));
-        aRows.push_back(aRow);
-    }
+        aTmp.push_back(aRow);
+
+        return aTmp;
+    }();
 
     pResult->setRows(std::move(aRows));
     return pResult;
diff --git a/connectivity/source/drivers/file/FDatabaseMetaData.cxx 
b/connectivity/source/drivers/file/FDatabaseMetaData.cxx
index 95d19d33b1eb..7b720f91000a 100644
--- a/connectivity/source/drivers/file/FDatabaseMetaData.cxx
+++ b/connectivity/source/drivers/file/FDatabaseMetaData.cxx
@@ -618,14 +618,13 @@ sal_Bool SAL_CALL ODatabaseMetaData::supportsOuterJoins(  
)
 
 Reference< XResultSet > SAL_CALL ODatabaseMetaData::getTableTypes(  )
 {
-    ::osl::MutexGuard aGuard( m_aMutex );
-
     rtl::Reference<ODatabaseMetaDataResultSet> pResult = new 
ODatabaseMetaDataResultSet( ODatabaseMetaDataResultSet::eTableTypes );
-    static ODatabaseMetaDataResultSet::ORows aRows;
-    if(aRows.empty())
+    static ODatabaseMetaDataResultSet::ORows aRows = []()
     {
-        aRows.push_back( { ODatabaseMetaDataResultSet::getEmptyValue(), new 
ORowSetValueDecorator(OUString("TABLE")) } );
-    }
+        ODatabaseMetaDataResultSet::ORows aTmp;
+        aTmp.push_back( { ODatabaseMetaDataResultSet::getEmptyValue(), new 
ORowSetValueDecorator(OUString("TABLE")) } );
+        return aTmp;
+    }();
     pResult->setRows(std::move(aRows));
     return pResult;
 }

Reply via email to