Skip to content

Commit 24b3ed1

Browse files
committed
postgres provider: fix detection of character fields (related to #8481)
1 parent 68660ac commit 24b3ed1

File tree

1 file changed

+18
-1
lines changed

1 file changed

+18
-1
lines changed

src/providers/postgres/qgspostgresprovider.cpp

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -758,7 +758,6 @@ bool QgsPostgresProvider::loadFields()
758758
fieldSize = -1;
759759
}
760760
else if ( fieldTypeName == "text" ||
761-
fieldTypeName == "bpchar" ||
762761
fieldTypeName == "bool" ||
763762
fieldTypeName == "geometry" ||
764763
fieldTypeName == "hstore" ||
@@ -772,6 +771,24 @@ bool QgsPostgresProvider::loadFields()
772771
fieldType = QVariant::String;
773772
fieldSize = -1;
774773
}
774+
else if ( fieldTypeName == "bpchar" )
775+
{
776+
fieldType = QVariant::String;
777+
778+
QRegExp re( "character\\((\\d+)\\)" );
779+
if ( re.exactMatch( formattedFieldType ) )
780+
{
781+
fieldSize = re.cap( 1 ).toInt();
782+
}
783+
else
784+
{
785+
QgsDebugMsg( QString( "unexpected formatted field type '%1' for field %2" )
786+
.arg( formattedFieldType )
787+
.arg( fieldName ) );
788+
fieldSize = -1;
789+
fieldPrec = -1;
790+
}
791+
}
775792
else if ( fieldTypeName == "char" )
776793
{
777794
fieldType = QVariant::String;

0 commit comments

Comments
 (0)