@@ -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" )
@@ -2921,7 +2928,7 @@ void QgsOgrProvider::uniqueValues( int index, QList<QVariant> &uniqueValues, int
2921
2928
OGRFeatureH f;
2922
2929
while ( ( f = OGR_L_GetNextFeature ( l ) ) )
2923
2930
{
2924
- uniqueValues << ( OGR_F_IsFieldSet ( f, 0 ) ? convertValue ( fld.type (), textEncoding ()->toUnicode ( OGR_F_GetFieldAsString ( f, 0 ) ) ) : QVariant ( fld.type () ) );
2931
+ uniqueValues << ( OGR_F_IsFieldSetAndNotNull ( f, 0 ) ? convertValue ( fld.type (), textEncoding ()->toUnicode ( OGR_F_GetFieldAsString ( f, 0 ) ) ) : QVariant ( fld.type () ) );
2925
2932
OGR_F_Destroy ( f );
2926
2933
2927
2934
if ( limit >= 0 && uniqueValues.size () >= limit )
@@ -2967,7 +2974,7 @@ QStringList QgsOgrProvider::uniqueStringsMatching( int index, const QString &sub
2967
2974
OGRFeatureH f;
2968
2975
while ( ( f = OGR_L_GetNextFeature ( l ) ) )
2969
2976
{
2970
- if ( OGR_F_IsFieldSet ( f, 0 ) )
2977
+ if ( OGR_F_IsFieldSetAndNotNull ( f, 0 ) )
2971
2978
results << textEncoding ()->toUnicode ( OGR_F_GetFieldAsString ( f, 0 ) );
2972
2979
OGR_F_Destroy ( f );
2973
2980
@@ -3010,7 +3017,7 @@ QVariant QgsOgrProvider::minimumValue( int index ) const
3010
3017
return QVariant ();
3011
3018
}
3012
3019
3013
- QVariant value = OGR_F_IsFieldSet ( f, 0 ) ? convertValue ( fld.type (), textEncoding ()->toUnicode ( OGR_F_GetFieldAsString ( f, 0 ) ) ) : QVariant ( fld.type () );
3020
+ QVariant value = OGR_F_IsFieldSetAndNotNull ( f, 0 ) ? convertValue ( fld.type (), textEncoding ()->toUnicode ( OGR_F_GetFieldAsString ( f, 0 ) ) ) : QVariant ( fld.type () );
3014
3021
OGR_F_Destroy ( f );
3015
3022
3016
3023
OGR_DS_ReleaseResultSet ( ogrDataSource, l );
@@ -3049,7 +3056,7 @@ QVariant QgsOgrProvider::maximumValue( int index ) const
3049
3056
return QVariant ();
3050
3057
}
3051
3058
3052
- QVariant value = OGR_F_IsFieldSet ( f, 0 ) ? convertValue ( fld.type (), textEncoding ()->toUnicode ( OGR_F_GetFieldAsString ( f, 0 ) ) ) : QVariant ( fld.type () );
3059
+ QVariant value = OGR_F_IsFieldSetAndNotNull ( f, 0 ) ? convertValue ( fld.type (), textEncoding ()->toUnicode ( OGR_F_GetFieldAsString ( f, 0 ) ) ) : QVariant ( fld.type () );
3053
3060
OGR_F_Destroy ( f );
3054
3061
3055
3062
OGR_DS_ReleaseResultSet ( ogrDataSource, l );
0 commit comments