Skip to content
Permalink
Browse files

Explain why the workaround for GPKG/SQLite is necessary

I've talked to Even for this one
  • Loading branch information
elpaso committed Feb 19, 2019
1 parent 5d7a7ac commit f4548273973c2d39def1be1822176488af0d7af1
Showing with 3 additions and 1 deletion.
  1. +3 −1 src/providers/ogr/qgsogrprovider.cpp
@@ -3622,6 +3622,9 @@ QSet<QVariant> QgsOgrProvider::uniqueValues( int index, int limit ) const
QByteArray sql = "SELECT DISTINCT " + quotedIdentifier( textEncoding()->fromUnicode( fld.name() ) );

// GPKG/SQLite fid
// For GPKG an SQLITE drivers PK fields are not exposed as real fields, (and OGR_F_GetFID only
// works with GPKG), so we are adding an extra column that will become index 0
// See https://issues.qgis.org/issues/21311
if ( ( mGDALDriverName == QLatin1String( "GPKG" ) || mGDALDriverName == QLatin1String( "SQLite" ) )
&& mFirstFieldIsFid && index == 0 )
{
@@ -3649,7 +3652,6 @@ QSet<QVariant> QgsOgrProvider::uniqueValues( int index, int limit ) const
while ( f.reset( l->GetNextFeature() ), f )
{
uniqueValues << ( OGR_F_IsFieldSetAndNotNull( f.get(), 0 ) ? convertValue( fld.type(), textEncoding()->toUnicode( OGR_F_GetFieldAsString( f.get(), 0 ) ) ) : QVariant( fld.type() ) );

if ( limit >= 0 && uniqueValues.size() >= limit )
break;
}

0 comments on commit f454827

Please sign in to comment.
You can’t perform that action at this time.