This commit is contained in:
Daniel Vaz 2013-06-27 22:20:16 -03:00
parent 5e760dd292
commit 9a0be04113
2 changed files with 21 additions and 0 deletions

View File

@ -801,6 +801,16 @@ QgsVectorFileWriter::writeAsVectorFormat( QgsVectorLayer* layer,
writer->startRender( layer ); writer->startRender( layer );
// enabling transaction on databases that support it
bool transactionsEnabled = true;
OGRLayerH ogrCurrentLayer = writer->getLayer();
if ( OGRERR_NONE != OGR_L_StartTransaction(ogrCurrentLayer) )
{
QgsDebugMsg("Error when trying to enable transactions on OGRLayer.");
transactionsEnabled = false;
}
// write all features // write all features
while ( fit.nextFeature( fet ) ) while ( fit.nextFeature( fet ) )
{ {
@ -862,6 +872,14 @@ QgsVectorFileWriter::writeAsVectorFormat( QgsVectorLayer* layer,
n++; n++;
} }
if ( transactionsEnabled )
{
if ( OGRERR_NONE != OGR_L_CommitTransaction(ogrCurrentLayer) )
{
QgsDebugMsg("Error while commiting transaction on OGRLayer.");
}
}
writer->stopRender( layer ); writer->stopRender( layer );
delete writer; delete writer;

View File

@ -155,6 +155,9 @@ class CORE_EXPORT QgsVectorFileWriter
double symbologyScaleDenominator() const { return mSymbologyScaleDenominator; } double symbologyScaleDenominator() const { return mSymbologyScaleDenominator; }
void setSymbologyScaleDenominator( double d ) { mSymbologyScaleDenominator = d; } void setSymbologyScaleDenominator( double d ) { mSymbologyScaleDenominator = d; }
/**Returns OGRLayer used to begin and commit transactions on database*/
OGRLayerH getLayer() { return mLayer; }
protected: protected:
//! @note not available in python bindings //! @note not available in python bindings
OGRGeometryH createEmptyGeometry( QGis::WkbType wkbType ); OGRGeometryH createEmptyGeometry( QGis::WkbType wkbType );