Skip to content

Commit 67b1cab

Browse files
authored
Merge pull request #5414 from m-kuhn/transactionStack
Deal with failure to create savepoint
2 parents c177995 + 479970b commit 67b1cab

File tree

2 files changed

+9
-1
lines changed

2 files changed

+9
-1
lines changed

src/core/qgstransaction.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
#include "qgsvectordataprovider.h"
2525
#include "qgsvectorlayer.h"
2626
#include "qgsexpression.h"
27+
#include "qgsmessagelog.h"
2728
#include <QUuid>
2829

2930
typedef QgsTransaction *createTransaction_t( const QString &connString );
@@ -195,7 +196,10 @@ QString QgsTransaction::createSavepoint( QString &error SIP_OUT )
195196
const QString name( QUuid::createUuid().toString() );
196197

197198
if ( !executeSql( QStringLiteral( "SAVEPOINT %1" ).arg( QgsExpression::quotedColumnRef( name ) ), error ) )
199+
{
200+
QgsMessageLog::logMessage( tr( "Could not create savepoint (%1)" ).arg( error ) );
198201
return QString();
202+
}
199203

200204
mSavepoints.push( name );
201205
mLastSavePointIsDirty = false;
@@ -208,7 +212,10 @@ QString QgsTransaction::createSavepoint( const QString &savePointId, QString &er
208212
return QString();
209213

210214
if ( !executeSql( QStringLiteral( "SAVEPOINT %1" ).arg( QgsExpression::quotedColumnRef( savePointId ) ), error ) )
215+
{
216+
QgsMessageLog::logMessage( tr( "Could not create savepoint (%1)" ).arg( error ) );
211217
return QString();
218+
}
212219

213220
mSavepoints.push( savePointId );
214221
mLastSavePointIsDirty = false;

src/core/qgsvectorlayerundopassthroughcommand.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,8 @@
3131

3232
QgsVectorLayerUndoPassthroughCommand::QgsVectorLayerUndoPassthroughCommand( QgsVectorLayerEditBuffer *buffer, const QString &text, bool autocreate )
3333
: QgsVectorLayerUndoCommand( buffer )
34-
, mSavePointId( mBuffer->L->isEditCommandActive() || !autocreate
34+
, mSavePointId( mBuffer->L->isEditCommandActive() && !mBuffer->L->dataProvider()->transaction()->savePoints().isEmpty()
35+
|| !autocreate
3536
? mBuffer->L->dataProvider()->transaction()->savePoints().last()
3637
: mBuffer->L->dataProvider()->transaction()->createSavepoint( mError ) )
3738
, mHasError( !mError.isEmpty() )

0 commit comments

Comments
 (0)