Skip to content

Commit 6e55fbe

Browse files
committedJun 14, 2015
save spatialite as: create integer column from qlonglong if it fits (fixes #12325; followup b736317)
1 parent 19b6b04 commit 6e55fbe

File tree

1 file changed

+17
-1
lines changed

1 file changed

+17
-1
lines changed
 

‎src/core/qgsvectorfilewriter.cpp

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1866,6 +1866,7 @@ QgsVectorFileWriter::WriterError QgsVectorFileWriter::writeAsVectorFormat( QgsVe
18661866
}
18671867

18681868
QGis::WkbType wkbType = layer->wkbType();
1869+
QgsFields fields = skipAttributeCreation ? QgsFields() : layer->pendingFields();
18691870

18701871
if ( layer->providerType() == "ogr" && layer->dataProvider() )
18711872
{
@@ -1898,9 +1899,24 @@ QgsVectorFileWriter::WriterError QgsVectorFileWriter::writeAsVectorFormat( QgsVe
18981899
}
18991900
}
19001901
}
1902+
else if ( layer->providerType() == "spatialite" )
1903+
{
1904+
for ( int i = 0; i < fields.size(); i++ )
1905+
{
1906+
if ( fields[i].type() == QVariant::LongLong )
1907+
{
1908+
QVariant min = layer->minimumValue( i );
1909+
QVariant max = layer->maximumValue( i );
1910+
if ( qMax( qAbs( min.toLongLong() ), qAbs( max.toLongLong() ) ) < INT_MAX )
1911+
{
1912+
fields[i].setType( QVariant::Int );
1913+
}
1914+
}
1915+
}
1916+
}
19011917

19021918
QgsVectorFileWriter* writer =
1903-
new QgsVectorFileWriter( fileName, fileEncoding, skipAttributeCreation ? QgsFields() : layer->pendingFields(), wkbType, outputCRS, driverName, datasourceOptions, layerOptions, newFilename, symbologyExport );
1919+
new QgsVectorFileWriter( fileName, fileEncoding, fields, wkbType, outputCRS, driverName, datasourceOptions, layerOptions, newFilename, symbologyExport );
19041920
writer->setSymbologyScaleDenominator( symbologyScale );
19051921

19061922
if ( newFilename )

0 commit comments

Comments
 (0)
Please sign in to comment.