@@ -56,6 +56,13 @@ email : sherman at mrcc.com
56
56
#include < sys/vfs.h>
57
57
#endif
58
58
59
+ // Starting with GDAL 2.2, there are 2 concepts: unset fields and null fields
60
+ // whereas previously there was only unset fields. For QGIS purposes, both
61
+ // states (unset/null) are equivalent.
62
+ #ifndef OGRNullMarker
63
+ #define OGR_F_IsFieldSetAndNotNull OGR_F_IsFieldSet
64
+ #endif
65
+
59
66
static const QString TEXT_PROVIDER_KEY = QStringLiteral( " ogr" );
60
67
static const QString TEXT_PROVIDER_DESCRIPTION =
61
68
QStringLiteral ( " OGR data provider" )
@@ -2867,7 +2874,7 @@ void QgsOgrProvider::uniqueValues( int index, QList<QVariant> &uniqueValues, int
2867
2874
OGRFeatureH f;
2868
2875
while ( ( f = OGR_L_GetNextFeature ( l ) ) )
2869
2876
{
2870
- uniqueValues << ( OGR_F_IsFieldSet ( f, 0 ) ? convertValue ( fld.type (), textEncoding ()->toUnicode ( OGR_F_GetFieldAsString ( f, 0 ) ) ) : QVariant ( fld.type () ) );
2877
+ uniqueValues << ( OGR_F_IsFieldSetAndNotNull ( f, 0 ) ? convertValue ( fld.type (), textEncoding ()->toUnicode ( OGR_F_GetFieldAsString ( f, 0 ) ) ) : QVariant ( fld.type () ) );
2871
2878
OGR_F_Destroy ( f );
2872
2879
2873
2880
if ( limit >= 0 && uniqueValues.size () >= limit )
@@ -2913,7 +2920,7 @@ QStringList QgsOgrProvider::uniqueStringsMatching( int index, const QString &sub
2913
2920
OGRFeatureH f;
2914
2921
while ( ( f = OGR_L_GetNextFeature ( l ) ) )
2915
2922
{
2916
- if ( OGR_F_IsFieldSet ( f, 0 ) )
2923
+ if ( OGR_F_IsFieldSetAndNotNull ( f, 0 ) )
2917
2924
results << textEncoding ()->toUnicode ( OGR_F_GetFieldAsString ( f, 0 ) );
2918
2925
OGR_F_Destroy ( f );
2919
2926
@@ -2956,7 +2963,7 @@ QVariant QgsOgrProvider::minimumValue( int index ) const
2956
2963
return QVariant ();
2957
2964
}
2958
2965
2959
- QVariant value = OGR_F_IsFieldSet ( f, 0 ) ? convertValue ( fld.type (), textEncoding ()->toUnicode ( OGR_F_GetFieldAsString ( f, 0 ) ) ) : QVariant ( fld.type () );
2966
+ QVariant value = OGR_F_IsFieldSetAndNotNull ( f, 0 ) ? convertValue ( fld.type (), textEncoding ()->toUnicode ( OGR_F_GetFieldAsString ( f, 0 ) ) ) : QVariant ( fld.type () );
2960
2967
OGR_F_Destroy ( f );
2961
2968
2962
2969
OGR_DS_ReleaseResultSet ( ogrDataSource, l );
@@ -2995,7 +3002,7 @@ QVariant QgsOgrProvider::maximumValue( int index ) const
2995
3002
return QVariant ();
2996
3003
}
2997
3004
2998
- QVariant value = OGR_F_IsFieldSet ( f, 0 ) ? convertValue ( fld.type (), textEncoding ()->toUnicode ( OGR_F_GetFieldAsString ( f, 0 ) ) ) : QVariant ( fld.type () );
3005
+ QVariant value = OGR_F_IsFieldSetAndNotNull ( f, 0 ) ? convertValue ( fld.type (), textEncoding ()->toUnicode ( OGR_F_GetFieldAsString ( f, 0 ) ) ) : QVariant ( fld.type () );
2999
3006
OGR_F_Destroy ( f );
3000
3007
3001
3008
OGR_DS_ReleaseResultSet ( ogrDataSource, l );
0 commit comments