@@ -207,40 +207,50 @@ QgsPostgresProvider::QgsPostgresProvider( QString const &uri, const ProviderOpti
207
207
#endif
208
208
209
209
// fill type names into sets
210
- setNativeTypes ( QList<NativeType>()
211
- // integer types
212
- << QgsVectorDataProvider::NativeType ( tr ( " Whole number (smallint - 16bit)" ), QStringLiteral ( " int2" ), QVariant::Int, -1 , -1 , 0 , 0 )
213
- << QgsVectorDataProvider::NativeType ( tr ( " Whole number (integer - 32bit)" ), QStringLiteral ( " int4" ), QVariant::Int, -1 , -1 , 0 , 0 )
214
- << QgsVectorDataProvider::NativeType ( tr ( " Whole number (integer - 64bit)" ), QStringLiteral ( " int8" ), QVariant::LongLong, -1 , -1 , 0 , 0 )
215
- << QgsVectorDataProvider::NativeType ( tr ( " Decimal number (numeric)" ), QStringLiteral ( " numeric" ), QVariant::Double, 1 , 20 , 0 , 20 )
216
- << QgsVectorDataProvider::NativeType ( tr ( " Decimal number (decimal)" ), QStringLiteral ( " decimal" ), QVariant::Double, 1 , 20 , 0 , 20 )
217
-
218
- // floating point
219
- << QgsVectorDataProvider::NativeType ( tr ( " Decimal number (real)" ), QStringLiteral ( " real" ), QVariant::Double, -1 , -1 , -1 , -1 )
220
- << QgsVectorDataProvider::NativeType ( tr ( " Decimal number (double)" ), QStringLiteral ( " double precision" ), QVariant::Double, -1 , -1 , -1 , -1 )
221
-
222
- // string types
223
- << QgsVectorDataProvider::NativeType ( tr ( " Text, fixed length (char)" ), QStringLiteral ( " char" ), QVariant::String, 1 , 255 , -1 , -1 )
224
- << QgsVectorDataProvider::NativeType ( tr ( " Text, limited variable length (varchar)" ), QStringLiteral ( " varchar" ), QVariant::String, 1 , 255 , -1 , -1 )
225
- << QgsVectorDataProvider::NativeType ( tr ( " Text, unlimited length (text)" ), QStringLiteral ( " text" ), QVariant::String, -1 , -1 , -1 , -1 )
226
-
227
- // date type
228
- << QgsVectorDataProvider::NativeType ( tr ( " Date" ), QStringLiteral ( " date" ), QVariant::Date, -1 , -1 , -1 , -1 )
229
- << QgsVectorDataProvider::NativeType ( tr ( " Time" ), QStringLiteral ( " time" ), QVariant::Time, -1 , -1 , -1 , -1 )
230
- << QgsVectorDataProvider::NativeType ( tr ( " Date & Time" ), QStringLiteral ( " timestamp without time zone" ), QVariant::DateTime, -1 , -1 , -1 , -1 )
231
-
232
- // complex types
233
- << QgsVectorDataProvider::NativeType ( tr ( " Map (hstore)" ), QStringLiteral ( " hstore" ), QVariant::Map, -1 , -1 , -1 , -1 , QVariant::String )
234
- << QgsVectorDataProvider::NativeType ( tr ( " Array of number (integer - 32bit)" ), QStringLiteral ( " int4[]" ), QVariant::List, -1 , -1 , -1 , -1 , QVariant::Int )
235
- << QgsVectorDataProvider::NativeType ( tr ( " Array of number (integer - 64bit)" ), QStringLiteral ( " int8[]" ), QVariant::List, -1 , -1 , -1 , -1 , QVariant::LongLong )
236
- << QgsVectorDataProvider::NativeType ( tr ( " Array of number (double)" ), QStringLiteral ( " double precision[]" ), QVariant::List, -1 , -1 , -1 , -1 , QVariant::Double )
237
- << QgsVectorDataProvider::NativeType ( tr ( " Array of text" ), QStringLiteral ( " text[]" ), QVariant::StringList, -1 , -1 , -1 , -1 , QVariant::String )
238
- << QgsVectorDataProvider::NativeType ( tr ( " Map (json)" ), QStringLiteral ( " json" ), QVariant::Map, -1 , -1 , -1 , -1 , QVariant::String )
239
- << QgsVectorDataProvider::NativeType ( tr ( " Map (jsonb)" ), QStringLiteral ( " jsonb" ), QVariant::Map, -1 , -1 , -1 , -1 , QVariant::String )
240
-
241
- // boolean
242
- << QgsVectorDataProvider::NativeType ( tr ( " Boolean" ), QStringLiteral ( " bool" ), QVariant::Bool, -1 , -1 , -1 , -1 )
243
- );
210
+ QList<NativeType> nativeTypes;
211
+
212
+ nativeTypes // integer types
213
+ << QgsVectorDataProvider::NativeType ( tr ( " Whole number (smallint - 16bit)" ), QStringLiteral ( " int2" ), QVariant::Int, -1 , -1 , 0 , 0 )
214
+ << QgsVectorDataProvider::NativeType ( tr ( " Whole number (integer - 32bit)" ), QStringLiteral ( " int4" ), QVariant::Int, -1 , -1 , 0 , 0 )
215
+ << QgsVectorDataProvider::NativeType ( tr ( " Whole number (integer - 64bit)" ), QStringLiteral ( " int8" ), QVariant::LongLong, -1 , -1 , 0 , 0 )
216
+ << QgsVectorDataProvider::NativeType ( tr ( " Decimal number (numeric)" ), QStringLiteral ( " numeric" ), QVariant::Double, 1 , 20 , 0 , 20 )
217
+ << QgsVectorDataProvider::NativeType ( tr ( " Decimal number (decimal)" ), QStringLiteral ( " decimal" ), QVariant::Double, 1 , 20 , 0 , 20 )
218
+
219
+ // floating point
220
+ << QgsVectorDataProvider::NativeType ( tr ( " Decimal number (real)" ), QStringLiteral ( " real" ), QVariant::Double, -1 , -1 , -1 , -1 )
221
+ << QgsVectorDataProvider::NativeType ( tr ( " Decimal number (double)" ), QStringLiteral ( " double precision" ), QVariant::Double, -1 , -1 , -1 , -1 )
222
+
223
+ // string types
224
+ << QgsVectorDataProvider::NativeType ( tr ( " Text, fixed length (char)" ), QStringLiteral ( " char" ), QVariant::String, 1 , 255 , -1 , -1 )
225
+ << QgsVectorDataProvider::NativeType ( tr ( " Text, limited variable length (varchar)" ), QStringLiteral ( " varchar" ), QVariant::String, 1 , 255 , -1 , -1 )
226
+ << QgsVectorDataProvider::NativeType ( tr ( " Text, unlimited length (text)" ), QStringLiteral ( " text" ), QVariant::String, -1 , -1 , -1 , -1 )
227
+
228
+ // date type
229
+ << QgsVectorDataProvider::NativeType ( tr ( " Date" ), QStringLiteral ( " date" ), QVariant::Date, -1 , -1 , -1 , -1 )
230
+ << QgsVectorDataProvider::NativeType ( tr ( " Time" ), QStringLiteral ( " time" ), QVariant::Time, -1 , -1 , -1 , -1 )
231
+ << QgsVectorDataProvider::NativeType ( tr ( " Date & Time" ), QStringLiteral ( " timestamp without time zone" ), QVariant::DateTime, -1 , -1 , -1 , -1 )
232
+
233
+ // complex types
234
+ << QgsVectorDataProvider::NativeType ( tr ( " Map (hstore)" ), QStringLiteral ( " hstore" ), QVariant::Map, -1 , -1 , -1 , -1 , QVariant::String )
235
+ << QgsVectorDataProvider::NativeType ( tr ( " Array of number (integer - 32bit)" ), QStringLiteral ( " int4[]" ), QVariant::List, -1 , -1 , -1 , -1 , QVariant::Int )
236
+ << QgsVectorDataProvider::NativeType ( tr ( " Array of number (integer - 64bit)" ), QStringLiteral ( " int8[]" ), QVariant::List, -1 , -1 , -1 , -1 , QVariant::LongLong )
237
+ << QgsVectorDataProvider::NativeType ( tr ( " Array of number (double)" ), QStringLiteral ( " double precision[]" ), QVariant::List, -1 , -1 , -1 , -1 , QVariant::Double )
238
+ << QgsVectorDataProvider::NativeType ( tr ( " Array of text" ), QStringLiteral ( " text[]" ), QVariant::StringList, -1 , -1 , -1 , -1 , QVariant::String )
239
+
240
+ // boolean
241
+ << QgsVectorDataProvider::NativeType ( tr ( " Boolean" ), QStringLiteral ( " bool" ), QVariant::Bool, -1 , -1 , -1 , -1 )
242
+ ;
243
+
244
+ if ( connectionRO ()->pgVersion () >= 90200 )
245
+ {
246
+ nativeTypes << QgsVectorDataProvider::NativeType ( tr ( " Map (json)" ), QStringLiteral ( " json" ), QVariant::Map, -1 , -1 , -1 , -1 , QVariant::String );
247
+
248
+ if ( connectionRO ()->pgVersion () >= 90400 )
249
+ {
250
+ nativeTypes << QgsVectorDataProvider::NativeType ( tr ( " Map (jsonb)" ), QStringLiteral ( " jsonb" ), QVariant::Map, -1 , -1 , -1 , -1 , QVariant::String );
251
+ }
252
+ }
253
+ setNativeTypes ( nativeTypes );
244
254
245
255
QString key;
246
256
switch ( mPrimaryKeyType )
@@ -4281,7 +4291,7 @@ QVariant QgsPostgresProvider::convertValue( QVariant::Type type, QVariant::Type
4281
4291
switch ( type )
4282
4292
{
4283
4293
case QVariant::Map:
4284
- if ( typeName. compare ( QLatin1String ( " json" ) ) == 0 || typeName. compare ( QLatin1String ( " jsonb" ) ) == 0 )
4294
+ if ( typeName == QLatin1String ( " json" ) || typeName == QLatin1String ( " jsonb" ) )
4285
4295
result = parseJson ( value );
4286
4296
else
4287
4297
result = parseHstore ( value );
0 commit comments