@@ -1118,21 +1118,41 @@ void QgsPostgresConn::retrieveLayerTypes( QgsPostgresLayerProperty &layerPropert
1118
1118
table += QString ( " WHERE %1" ).arg ( layerProperty.sql );
1119
1119
}
1120
1120
1121
- QString query = QString ( " SELECT DISTINCT"
1122
- " CASE"
1123
- " WHEN %1 THEN 'POINT'"
1124
- " WHEN %2 THEN 'LINESTRING'"
1125
- " WHEN %3 THEN 'POLYGON'"
1126
- " END,"
1127
- " %4(%5%6)"
1128
- " FROM %7" )
1129
- .arg ( postgisTypeFilter ( layerProperty.geometryColName , QGis::WKBPoint, layerProperty.geometryColType == sctGeography ) )
1130
- .arg ( postgisTypeFilter ( layerProperty.geometryColName , QGis::WKBLineString, layerProperty.geometryColType == sctGeography ) )
1131
- .arg ( postgisTypeFilter ( layerProperty.geometryColName , QGis::WKBPolygon, layerProperty.geometryColType == sctGeography ) )
1132
- .arg ( majorVersion () < 2 ? " srid" : " st_srid" )
1133
- .arg ( quotedIdentifier ( layerProperty.geometryColName ) )
1134
- .arg ( layerProperty.geometryColType == sctGeography ? " ::geometry" : " " )
1135
- .arg ( table );
1121
+ QString query = " SELECT DISTINCT " ;
1122
+
1123
+ QGis::WkbType type = layerProperty.types .value ( 0 , QGis::WKBUnknown );
1124
+ if ( type == QGis::WKBUnknown )
1125
+ {
1126
+ query += QString ( " CASE"
1127
+ " WHEN %1 THEN 'POINT'"
1128
+ " WHEN %2 THEN 'LINESTRING'"
1129
+ " WHEN %3 THEN 'POLYGON'"
1130
+ " END" )
1131
+ .arg ( postgisTypeFilter ( layerProperty.geometryColName , QGis::WKBPoint, layerProperty.geometryColType == sctGeography ) )
1132
+ .arg ( postgisTypeFilter ( layerProperty.geometryColName , QGis::WKBLineString, layerProperty.geometryColType == sctGeography ) )
1133
+ .arg ( postgisTypeFilter ( layerProperty.geometryColName , QGis::WKBPolygon, layerProperty.geometryColType == sctGeography ) );
1134
+ }
1135
+ else
1136
+ {
1137
+ query += quotedValue ( QgsPostgresConn::postgisWkbTypeName ( type ) );
1138
+ }
1139
+
1140
+ query += " ," ;
1141
+
1142
+ int srid = layerProperty.srids .value ( 0 , INT_MIN );
1143
+ if ( srid == INT_MIN )
1144
+ {
1145
+ query += QString ( " %1(%2%3)" )
1146
+ .arg ( majorVersion () < 2 ? " srid" : " st_srid" )
1147
+ .arg ( quotedIdentifier ( layerProperty.geometryColName ) )
1148
+ .arg ( layerProperty.geometryColType == sctGeography ? " ::geometry" : " " );
1149
+ }
1150
+ else
1151
+ {
1152
+ query += QString::number ( srid );
1153
+ }
1154
+
1155
+ query += " FROM " + table;
1136
1156
1137
1157
QgsDebugMsg ( " Retrieving geometry types: " + query );
1138
1158
0 commit comments