connectivity/source/drivers/firebird/Connection.cxx       |   30 +-
 connectivity/source/drivers/firebird/Connection.hxx       |    1 
 connectivity/source/drivers/firebird/DatabaseMetaData.cxx |  199 ++++++++------
 3 files changed, 135 insertions(+), 95 deletions(-)

New commits:
commit cc1e1e9509dd78d043c4b2f345df84635bc7492a
Author: Andrzej J.R. Hunt <andr...@ahunt.org>
Date:   Fri Aug 2 14:41:36 2013 +0200

    Only write db to file if we are embedded. (firebird-sdbc)
    
    Change-Id: If6126a8005d666c0c1355efc2a887519da37c891

diff --git a/connectivity/source/drivers/firebird/Connection.cxx 
b/connectivity/source/drivers/firebird/Connection.cxx
index 02beb6b..07b16eb 100644
--- a/connectivity/source/drivers/firebird/Connection.cxx
+++ b/connectivity/source/drivers/firebird/Connection.cxx
@@ -610,6 +610,11 @@ void SAL_CALL OConnection::clearWarnings(  ) 
throw(SQLException, RuntimeExceptio
 void SAL_CALL OConnection::documentEventOccured( const DocumentEvent& _Event )
                                                         throw(RuntimeException)
 {
+    MutexGuard aGuard(m_aMutex);
+
+    if (!m_bIsEmbedded)
+        return;
+
     if (_Event.EventName == "OnSave" || _Event.EventName == "OnSaveAs")
     {
         commit(); // Commit and close transaction
commit 03528afc5c21350b064d6a43fc57f1adc1c94c41
Author: Andrzej J.R. Hunt <andr...@ahunt.org>
Date:   Fri Aug 2 14:33:17 2013 +0200

    Clear Statements as appropriate. (firebird-sdbc)
    
    Change-Id: Ied90fe623dff284179c88ae77392d641ba0b004b

diff --git a/connectivity/source/drivers/firebird/Connection.cxx 
b/connectivity/source/drivers/firebird/Connection.cxx
index 96ed57c..02beb6b 100644
--- a/connectivity/source/drivers/firebird/Connection.cxx
+++ b/connectivity/source/drivers/firebird/Connection.cxx
@@ -421,6 +421,7 @@ void OConnection::setupTransaction()
     // is lost...
     if (m_transactionHandle)
     {
+        clearStatements();
         isc_rollback_transaction(status_vector, &m_transactionHandle);
     }
 
@@ -454,9 +455,6 @@ void OConnection::setupTransaction()
 
     isc_start_transaction(status_vector, &m_transactionHandle, 1, &m_DBHandler,
                           (unsigned short) sizeof(isc_tpb), isc_tpb);
-
-    //TODO: transmit to open statements?
-
 }
 
 isc_tr_handle& OConnection::getTransaction()
@@ -478,6 +476,7 @@ void SAL_CALL OConnection::commit() throw(SQLException, 
RuntimeException)
 
     if (!m_bAutoCommit && m_transactionHandle)
     {
+        clearStatements();
         isc_commit_transaction(status_vector, &m_transactionHandle);
     }
 }
@@ -613,6 +612,7 @@ void SAL_CALL OConnection::documentEventOccured( const 
DocumentEvent& _Event )
 {
     if (_Event.EventName == "OnSave" || _Event.EventName == "OnSaveAs")
     {
+        commit(); // Commit and close transaction
         if ( m_bIsEmbedded && m_xEmbeddedStorage.is() )
         {
             SAL_INFO("connectivity.firebird", "Writing .fdb into .odb" );
@@ -698,13 +698,7 @@ void OConnection::disposing()
 
     MutexGuard aGuard(m_aMutex);
 
-    for (OWeakRefArray::iterator i = m_aStatements.begin(); 
m_aStatements.end() != i; ++i)
-    {
-        Reference< XComponent > xComp(i->get(), UNO_QUERY);
-        if (xComp.is())
-            xComp->dispose();
-    }
-    m_aStatements.clear();
+    clearStatements();
 
     m_bClosed   = sal_True;
     m_xMetaData = ::com::sun::star::uno::WeakReference< 
::com::sun::star::sdbc::XDatabaseMetaData>();
@@ -734,4 +728,15 @@ void OConnection::disposing()
     cppu::WeakComponentImplHelperBase::disposing();
 }
 
+void OConnection::clearStatements()
+{
+    MutexGuard aGuard(m_aMutex);
+    for (OWeakRefArray::iterator i = m_aStatements.begin(); 
m_aStatements.end() != i; ++i)
+    {
+        Reference< XComponent > xComp(i->get(), UNO_QUERY);
+        if (xComp.is())
+            xComp->dispose();
+    }
+    m_aStatements.clear();
+}
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/connectivity/source/drivers/firebird/Connection.hxx 
b/connectivity/source/drivers/firebird/Connection.hxx
index 559bba9..fcc59ef 100644
--- a/connectivity/source/drivers/firebird/Connection.hxx
+++ b/connectivity/source/drivers/firebird/Connection.hxx
@@ -112,6 +112,7 @@ namespace connectivity
             void                    buildTypeInfo() throw( 
::com::sun::star::sdbc::SQLException);
 
             void                    setupTransaction();
+            void                    clearStatements();
         public:
             virtual void construct( const ::rtl::OUString& url,
                                     const ::com::sun::star::uno::Sequence< 
::com::sun::star::beans::PropertyValue >& info)
commit 935eab83a92426d9fd9e335d8f16c7c4658491c1
Author: Andrzej J.R. Hunt <andr...@ahunt.org>
Date:   Fri Aug 2 14:29:16 2013 +0200

    Make getPrimaryKeys actually work. (firebird-sdbc)
    
    Change-Id: Ia300e85675a24a2900cfeb8ee75bf58356b14b30

diff --git a/connectivity/source/drivers/firebird/DatabaseMetaData.cxx 
b/connectivity/source/drivers/firebird/DatabaseMetaData.cxx
index 43e4889..c30ba43 100644
--- a/connectivity/source/drivers/firebird/DatabaseMetaData.cxx
+++ b/connectivity/source/drivers/firebird/DatabaseMetaData.cxx
@@ -1501,9 +1501,9 @@ uno::Reference< XResultSet > SAL_CALL 
ODatabaseMetaData::getPrimaryKeys(
     OUStringBuffer aQueryBuf("SELECT "
         "constr.RDB$RELATION_NAME, "    // 1. Table Name
         "inds.RDB$FIELD_NAME, "         // 2. Column Name
-        "inds.RDB$SORT_ORDER, "         // 3. Sequence Number
-        "constr.RDB$CONSTRAINT_NAME, "  // 4 Constraint name
-        "FROM RDB$RELATION_FIELDS constr "
+        "inds.RDB$FIELD_POSITION, "     // 3. Sequence Number
+        "constr.RDB$CONSTRAINT_NAME "   // 4 Constraint name
+        "FROM RDB$RELATION_CONSTRAINTS constr "
         "JOIN RDB$INDEX_SEGMENTS inds "
         "on (constr.RDB$INDEX_NAME = inds.RDB$INDEX_NAME) ");
 
commit 6f92b92458a35c3c88b732dabe4d6242fafe9584
Author: Andrzej J.R. Hunt <andr...@ahunt.org>
Date:   Fri Aug 2 10:57:25 2013 +0200

    Tidy up Transaction info in DatabaseMetaData. (firebird-sdbc)
    
    Change-Id: I77af538722e7e512db9bcd48d90f5c98ead379a2

diff --git a/connectivity/source/drivers/firebird/DatabaseMetaData.cxx 
b/connectivity/source/drivers/firebird/DatabaseMetaData.cxx
index b12c79b..43e4889 100644
--- a/connectivity/source/drivers/firebird/DatabaseMetaData.cxx
+++ b/connectivity/source/drivers/firebird/DatabaseMetaData.cxx
@@ -408,32 +408,59 @@ sal_Bool SAL_CALL ODatabaseMetaData::
 {
     return sal_True;
 }
-// -------------------------------------------------------------------------
-sal_Bool SAL_CALL ODatabaseMetaData::supportsOpenStatementsAcrossRollback(  ) 
throw(SQLException, RuntimeException)
+//----- Transaction Support --------------------------------------------------
+sal_Bool SAL_CALL ODatabaseMetaData::supportsTransactions()
+    throw(SQLException, RuntimeException)
 {
-    return sal_False;
+    return sal_True;
 }
-// -------------------------------------------------------------------------
-sal_Bool SAL_CALL ODatabaseMetaData::supportsOpenStatementsAcrossCommit(  ) 
throw(SQLException, RuntimeException)
+
+sal_Bool SAL_CALL ODatabaseMetaData::supportsOpenStatementsAcrossRollback()
+    throw(SQLException, RuntimeException)
 {
     return sal_False;
 }
-// -------------------------------------------------------------------------
-sal_Bool SAL_CALL ODatabaseMetaData::supportsOpenCursorsAcrossCommit(  ) 
throw(SQLException, RuntimeException)
+
+sal_Bool SAL_CALL ODatabaseMetaData::supportsOpenStatementsAcrossCommit()
+    throw(SQLException, RuntimeException)
 {
     return sal_False;
 }
-// -------------------------------------------------------------------------
-sal_Bool SAL_CALL ODatabaseMetaData::supportsOpenCursorsAcrossRollback(  ) 
throw(SQLException, RuntimeException)
+
+sal_Bool SAL_CALL ODatabaseMetaData::supportsOpenCursorsAcrossCommit()
+    throw(SQLException, RuntimeException)
 {
     return sal_False;
 }
-// -------------------------------------------------------------------------
-sal_Bool SAL_CALL ODatabaseMetaData::supportsTransactionIsolationLevel( 
sal_Int32 level ) throw(SQLException, RuntimeException)
+
+sal_Bool SAL_CALL ODatabaseMetaData::supportsOpenCursorsAcrossRollback()
+    throw(SQLException, RuntimeException)
 {
-    (void) level;
     return sal_False;
 }
+
+sal_Bool SAL_CALL ODatabaseMetaData::supportsMultipleTransactions()
+    throw(SQLException, RuntimeException)
+{
+    return sal_True;
+}
+
+sal_Bool SAL_CALL ODatabaseMetaData::supportsTransactionIsolationLevel(
+        sal_Int32 aLevel)
+    throw(SQLException, RuntimeException)
+{
+    return  aLevel == TransactionIsolation::READ_UNCOMMITTED
+           || aLevel == TransactionIsolation::READ_COMMITTED
+           || aLevel == TransactionIsolation::REPEATABLE_READ
+           || aLevel == TransactionIsolation::SERIALIZABLE;
+}
+
+sal_Int32 SAL_CALL ODatabaseMetaData::getDefaultTransactionIsolation()
+    throw(SQLException, RuntimeException)
+{
+    return TransactionIsolation::REPEATABLE_READ;
+}
+
 // -------------------------------------------------------------------------
 sal_Bool SAL_CALL ODatabaseMetaData::supportsANSI92FullSQL(  ) 
throw(SQLException, RuntimeException)
 {
@@ -461,11 +488,6 @@ sal_Int32 SAL_CALL 
ODatabaseMetaData::getMaxProcedureNameLength(  ) throw(SQLExc
     sal_Int32 nValue = 31; // TODO: confirm
     return nValue;
 }
-
-sal_Bool SAL_CALL ODatabaseMetaData::supportsTransactions(  ) 
throw(SQLException, RuntimeException)
-{
-    return sal_True;
-}
 // -------------------------------------------------------------------------
 sal_Bool SAL_CALL ODatabaseMetaData::allProceduresAreCallable(  ) 
throw(SQLException, RuntimeException)
 {
@@ -519,10 +541,6 @@ sal_Bool SAL_CALL 
ODatabaseMetaData::supportsGroupByUnrelated(  ) throw(SQLExcep
     return sal_False;
 }
 
-sal_Bool SAL_CALL ODatabaseMetaData::supportsMultipleTransactions(  ) 
throw(SQLException, RuntimeException)
-{
-    return sal_True;
-}
 // -------------------------------------------------------------------------
 sal_Bool SAL_CALL ODatabaseMetaData::supportsMultipleResultSets(  ) 
throw(SQLException, RuntimeException)
 {
@@ -645,11 +663,6 @@ sal_Int32 SAL_CALL 
ODatabaseMetaData::getDriverMajorVersion(  ) throw(RuntimeExc
     return 1;
 }
 // -------------------------------------------------------------------------
-sal_Int32 SAL_CALL ODatabaseMetaData::getDefaultTransactionIsolation(  ) 
throw(SQLException, RuntimeException)
-{
-    return TransactionIsolation::NONE;
-}
-// -------------------------------------------------------------------------
 sal_Int32 SAL_CALL ODatabaseMetaData::getDriverMinorVersion(  ) 
throw(RuntimeException)
 {
     return 0;
commit 5292d90f24b7d0f29445c4634dd9219d8d6ea3d7
Author: Andrzej J.R. Hunt <andr...@ahunt.org>
Date:   Fri Aug 2 10:48:21 2013 +0200

    Implement supportsResultSetConcurrency. (firebird-sdbc)
    
    Change-Id: Id830f703c40c3b16db5f6237325762619cbe54eb

diff --git a/connectivity/source/drivers/firebird/DatabaseMetaData.cxx 
b/connectivity/source/drivers/firebird/DatabaseMetaData.cxx
index 87b7ae6..b12c79b 100644
--- a/connectivity/source/drivers/firebird/DatabaseMetaData.cxx
+++ b/connectivity/source/drivers/firebird/DatabaseMetaData.cxx
@@ -746,12 +746,17 @@ sal_Bool SAL_CALL 
ODatabaseMetaData::supportsResultSetType(sal_Int32 setType)
             return sal_False;
     }
 }
-// -------------------------------------------------------------------------
-sal_Bool SAL_CALL ODatabaseMetaData::supportsResultSetConcurrency( sal_Int32 
setType, sal_Int32 concurrency ) throw(SQLException, RuntimeException)
+
+sal_Bool SAL_CALL ODatabaseMetaData::supportsResultSetConcurrency(
+        sal_Int32 aResultSetType,
+        sal_Int32 aConcurrency)
+    throw(SQLException, RuntimeException)
 {
-    (void) setType;
-    (void) concurrency;
-    return sal_False;
+    if (aResultSetType == ResultSetType::FORWARD_ONLY
+        && aConcurrency == ResultSetConcurrency::READ_ONLY)
+        return sal_True;
+    else
+        return sal_False;
 }
 // -------------------------------------------------------------------------
 sal_Bool SAL_CALL ODatabaseMetaData::ownUpdatesAreVisible( sal_Int32 setType ) 
throw(SQLException, RuntimeException)
commit d74ca3bc9927f941cda810b655393ad18eea1a6e
Author: Andrzej J.R. Hunt <andr...@ahunt.org>
Date:   Fri Aug 2 10:41:43 2013 +0200

    Some more DatabaseMetaData. (firebird-sdbc)
    
    Change-Id: Ic8f1a2c1d67d163e6bd326d9b759b9f9cda67b35

diff --git a/connectivity/source/drivers/firebird/DatabaseMetaData.cxx 
b/connectivity/source/drivers/firebird/DatabaseMetaData.cxx
index 580fa23..87b7ae6 100644
--- a/connectivity/source/drivers/firebird/DatabaseMetaData.cxx
+++ b/connectivity/source/drivers/firebird/DatabaseMetaData.cxx
@@ -114,6 +114,55 @@ sal_Bool SAL_CALL 
ODatabaseMetaData::supportsCatalogsInPrivilegeDefinitions() th
     return sal_False;
 }
 
+//----- Schema Info -- UNSUPPORTED --------------------------------------------
+sal_Bool SAL_CALL ODatabaseMetaData::supportsSchemasInProcedureCalls()
+    throw(SQLException, RuntimeException)
+{
+    return sal_False;
+}
+
+sal_Bool SAL_CALL ODatabaseMetaData::supportsSchemasInPrivilegeDefinitions()
+    throw(SQLException, RuntimeException)
+{
+    return sal_False;
+}
+
+sal_Bool SAL_CALL ODatabaseMetaData::supportsSchemasInDataManipulation()
+    throw(SQLException, RuntimeException)
+{
+    return sal_False;
+}
+
+sal_Bool SAL_CALL ODatabaseMetaData::supportsSchemasInIndexDefinitions()
+    throw(SQLException, RuntimeException)
+{
+    return sal_False;
+}
+
+sal_Bool SAL_CALL ODatabaseMetaData::supportsSchemasInTableDefinitions()
+    throw(SQLException, RuntimeException)
+{
+    return sal_False;
+}
+
+sal_Int32 SAL_CALL ODatabaseMetaData::getMaxSchemaNameLength()
+    throw(SQLException, RuntimeException)
+{
+    return -1;
+}
+
+OUString SAL_CALL ODatabaseMetaData::getSchemaTerm()
+    throw(SQLException, RuntimeException)
+{
+    return OUString();
+}
+
+uno::Reference< XResultSet > SAL_CALL ODatabaseMetaData::getSchemas()
+    throw(SQLException, RuntimeException)
+{
+    return 0;
+}
+
 //----- Max Sizes/Lengths -----------------------------------------------------
 sal_Int32 SAL_CALL ODatabaseMetaData::getMaxBinaryLiteralLength() 
throw(SQLException, RuntimeException)
 {
@@ -334,23 +383,28 @@ sal_Bool SAL_CALL 
ODatabaseMetaData::supportsDifferentTableCorrelationNames(  )
 {
     return sal_False;
 }
-// -------------------------------------------------------------------------
-sal_Bool SAL_CALL ODatabaseMetaData::dataDefinitionIgnoredInTransactions(  ) 
throw(SQLException, RuntimeException)
+// ---- Data definition stuff -------------------------------------------------
+sal_Bool SAL_CALL ODatabaseMetaData::dataDefinitionIgnoredInTransactions()
+    throw(SQLException, RuntimeException)
 {
-    return sal_True;
+    return sal_False;
 }
-// -------------------------------------------------------------------------
-sal_Bool SAL_CALL ODatabaseMetaData::dataDefinitionCausesTransactionCommit(  ) 
throw(SQLException, RuntimeException)
+
+sal_Bool SAL_CALL ODatabaseMetaData::dataDefinitionCausesTransactionCommit()
+    throw(SQLException, RuntimeException)
 {
-    return sal_True;
+    return sal_False;
 }
-// -------------------------------------------------------------------------
-sal_Bool SAL_CALL ODatabaseMetaData::supportsDataManipulationTransactionsOnly( 
 ) throw(SQLException, RuntimeException)
+
+sal_Bool SAL_CALL ODatabaseMetaData::supportsDataManipulationTransactionsOnly()
+    throw(SQLException, RuntimeException)
 {
-    return sal_True;
+    return sal_False;
 }
-// -------------------------------------------------------------------------
-sal_Bool SAL_CALL 
ODatabaseMetaData::supportsDataDefinitionAndDataManipulationTransactions(  ) 
throw(SQLException, RuntimeException)
+
+sal_Bool SAL_CALL ODatabaseMetaData::
+        supportsDataDefinitionAndDataManipulationTransactions()
+    throw(SQLException, RuntimeException)
 {
     return sal_True;
 }
@@ -381,11 +435,6 @@ sal_Bool SAL_CALL 
ODatabaseMetaData::supportsTransactionIsolationLevel( sal_Int3
     return sal_False;
 }
 // -------------------------------------------------------------------------
-sal_Bool SAL_CALL ODatabaseMetaData::supportsSchemasInDataManipulation(  ) 
throw(SQLException, RuntimeException)
-{
-    return sal_False;
-}
-// -------------------------------------------------------------------------
 sal_Bool SAL_CALL ODatabaseMetaData::supportsANSI92FullSQL(  ) 
throw(SQLException, RuntimeException)
 {
     return sal_False;
@@ -401,16 +450,6 @@ sal_Bool SAL_CALL 
ODatabaseMetaData::supportsIntegrityEnhancementFacility(  ) th
     return sal_False;
 }
 // -------------------------------------------------------------------------
-sal_Bool SAL_CALL ODatabaseMetaData::supportsSchemasInIndexDefinitions(  ) 
throw(SQLException, RuntimeException)
-{
-    return sal_False;
-}
-// -------------------------------------------------------------------------
-sal_Bool SAL_CALL ODatabaseMetaData::supportsSchemasInTableDefinitions(  ) 
throw(SQLException, RuntimeException)
-{
-    return sal_False;
-}
-// -------------------------------------------------------------------------
 sal_Int32 SAL_CALL ODatabaseMetaData::getMaxStatements(  ) throw(SQLException, 
RuntimeException)
 {
     sal_Int32 nValue = 0; // 0 means no limit
@@ -422,12 +461,6 @@ sal_Int32 SAL_CALL 
ODatabaseMetaData::getMaxProcedureNameLength(  ) throw(SQLExc
     sal_Int32 nValue = 31; // TODO: confirm
     return nValue;
 }
-// -------------------------------------------------------------------------
-sal_Int32 SAL_CALL ODatabaseMetaData::getMaxSchemaNameLength(  ) 
throw(SQLException, RuntimeException)
-{
-    sal_Int32 nValue = -1; // 0 means no limit
-    return nValue;
-}
 
 sal_Bool SAL_CALL ODatabaseMetaData::supportsTransactions(  ) 
throw(SQLException, RuntimeException)
 {
@@ -536,16 +569,6 @@ sal_Bool SAL_CALL ODatabaseMetaData::nullsAreSortedLow(  ) 
throw(SQLException, R
     return sal_False;
 }
 // -------------------------------------------------------------------------
-sal_Bool SAL_CALL ODatabaseMetaData::supportsSchemasInProcedureCalls(  ) 
throw(SQLException, RuntimeException)
-{
-    return sal_False;
-}
-// -------------------------------------------------------------------------
-sal_Bool SAL_CALL ODatabaseMetaData::supportsSchemasInPrivilegeDefinitions(  ) 
throw(SQLException, RuntimeException)
-{
-    return sal_False;
-}
-// -------------------------------------------------------------------------
 sal_Bool SAL_CALL ODatabaseMetaData::supportsCorrelatedSubqueries(  ) 
throw(SQLException, RuntimeException)
 {
     return sal_False;
@@ -617,12 +640,6 @@ OUString SAL_CALL ODatabaseMetaData::getProcedureTerm(  ) 
throw(SQLException, Ru
     return aValue;
 }
 // -------------------------------------------------------------------------
-OUString SAL_CALL ODatabaseMetaData::getSchemaTerm(  ) throw(SQLException, 
RuntimeException)
-{
-    OUString aValue;
-    return aValue;
-}
-// -------------------------------------------------------------------------
 sal_Int32 SAL_CALL ODatabaseMetaData::getDriverMajorVersion(  ) 
throw(RuntimeException)
 {
     return 1;
@@ -992,12 +1009,6 @@ uno::Reference< XResultSet > SAL_CALL 
ODatabaseMetaData::getTypeInfo()
     return xResultSet;
 }
 
-uno::Reference< XResultSet > SAL_CALL ODatabaseMetaData::getSchemas()
-    throw(SQLException, RuntimeException)
-{
-    return NULL;
-}
-
 uno::Reference< XResultSet > SAL_CALL ODatabaseMetaData::getColumnPrivileges(
         const Any& aCatalog,
         const OUString& sSchema,
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to