tdf#122129 Firebird: fix concurrency issue

Allow only one isc_dsql_prepare at a time.

Change-Id: I3d5974057272cd47697aeb7be54579d0c1a662a0
Reviewed-on: https://gerrit.libreoffice.org/67231
Tested-by: Jenkins
Reviewed-by: Tamás Bunth <btomi96@gmail.com>
(cherry picked from commit 6affbd2b57a336749a6a2ab3466a4e652a7ff365)
Reviewed-on: https://gerrit.libreoffice.org/69227
Reviewed-by: Adolfo Jayme Barrientos <fitojb@ubuntu.com>
(cherry picked from commit bd5ef0f1ecb445021fc693bfd3cab0979a4c4c28)
Reviewed-on: https://gerrit.libreoffice.org/69281
Reviewed-by: Eike Rathke <erack@redhat.com>
Reviewed-by: Christian Lohmaier <lohmaier+LibreOffice@googlemail.com>
Tested-by: Christian Lohmaier <lohmaier+LibreOffice@googlemail.com>
diff --git a/connectivity/source/drivers/firebird/StatementCommonBase.cxx b/connectivity/source/drivers/firebird/StatementCommonBase.cxx
index 03439c9..8d3c4b4 100644
--- a/connectivity/source/drivers/firebird/StatementCommonBase.cxx
+++ b/connectivity/source/drivers/firebird/StatementCommonBase.cxx
@@ -26,6 +26,7 @@
#include <comphelper/sequence.hxx>
#include <cppuhelper/typeprovider.hxx>
#include <propertyids.hxx>
#include <vcl/svapp.hxx>
#include <TConnection.hxx>

using namespace ::connectivity::firebird;
@@ -126,7 +127,7 @@
                                                      XSQLDA*& pOutSqlda,
                                                      XSQLDA* pInSqlda)
{
    MutexGuard aGuard(m_aMutex);
    SolarMutexGuard g; // tdf#122129

    freeStatementHandle();