@@ -2767,9 +2767,17 @@ bool QgsPostgresProvider::getGeometryDetails()
2767
2767
return mValid ;
2768
2768
}
2769
2769
2770
- bool QgsPostgresProvider::convertField ( QgsField &field )
2770
+ bool QgsPostgresProvider::convertField ( QgsField &field , const QMap<QString, QVariant>* options )
2771
2771
{
2772
- QString fieldType = " varchar" ; // default to string
2772
+ // determine field type to use for strings
2773
+ QString stringFieldType = " varchar" ;
2774
+ if ( options->contains ( " dropStringConstraints" ) && options->value ( " dropStringConstraints" ).toBool () )
2775
+ {
2776
+ // drop string length constraints by using PostgreSQL text type for strings
2777
+ stringFieldType = " text" ;
2778
+ }
2779
+
2780
+ QString fieldType = stringFieldType; // default to string
2773
2781
int fieldSize = field.length ();
2774
2782
int fieldPrec = field.precision ();
2775
2783
switch ( field.type () )
@@ -2788,7 +2796,7 @@ bool QgsPostgresProvider::convertField( QgsField &field )
2788
2796
break ;
2789
2797
2790
2798
case QVariant::String:
2791
- fieldType = " varchar " ;
2799
+ fieldType = stringFieldType ;
2792
2800
fieldPrec = -1 ;
2793
2801
break ;
2794
2802
@@ -2900,7 +2908,7 @@ QgsVectorLayerImport::ImportError QgsPostgresProvider::createEmptyLayer(
2900
2908
{
2901
2909
// found, get the field type
2902
2910
QgsField fld = fields[fldIdx];
2903
- if ( convertField ( fld ) )
2911
+ if ( convertField ( fld, options ) )
2904
2912
{
2905
2913
primaryKeyType = fld.typeName ();
2906
2914
}
@@ -3050,7 +3058,7 @@ QgsVectorLayerImport::ImportError QgsPostgresProvider::createEmptyLayer(
3050
3058
fld.setName ( fld.name ().toLower () );
3051
3059
}
3052
3060
3053
- if ( !convertField ( fld ) )
3061
+ if ( !convertField ( fld, options ) )
3054
3062
{
3055
3063
if ( errorMessage )
3056
3064
*errorMessage = QObject::tr ( " Unsupported type for field %1" ).arg ( fld.name () );
0 commit comments