Skip to content

Commit 97f8039

Browse files
committed
add support for mixed case geometry types of PostGIS 2.0
1 parent a637ebc commit 97f8039

File tree

2 files changed

+11
-11
lines changed

2 files changed

+11
-11
lines changed

src/app/postgres/qgspgsourceselect.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -345,15 +345,15 @@ QString QgsPgSourceSelect::layerURI( const QModelIndex &index )
345345

346346
if ( typeName == "POINT" )
347347
{
348-
geomFilter = QString( "geometrytype(\"%1\") IN ('POINT','MULTIPOINT')" ).arg( geomColumnName );
348+
geomFilter = QString( "upper(geometrytype(\"%1\")) IN ('POINT','MULTIPOINT')" ).arg( geomColumnName );
349349
}
350350
else if ( typeName == "LINESTRING" )
351351
{
352-
geomFilter = QString( "geometrytype(\"%1\") IN ('LINESTRING','MULTILINESTRING')" ).arg( geomColumnName );
352+
geomFilter = QString( "upper(geometrytype(\"%1\")) IN ('LINESTRING','MULTILINESTRING')" ).arg( geomColumnName );
353353
}
354354
else if ( typeName == "POLYGON" )
355355
{
356-
geomFilter = QString( "geometrytype(\"%1\") IN ('POLYGON','MULTIPOLYGON')" ).arg( geomColumnName );
356+
geomFilter = QString( "upper(geometrytype(\"%1\")) IN ('POLYGON','MULTIPOLYGON')" ).arg( geomColumnName );
357357
}
358358

359359
if ( !geomFilter.isEmpty() && !sql.contains( geomFilter ) )
@@ -972,9 +972,9 @@ void QgsGeomColumnTypeThread::getLayerTypes()
972972
{
973973
QString query = QString( "select distinct "
974974
"case"
975-
" when geometrytype(%1) IN ('POINT','MULTIPOINT') THEN 'POINT'"
976-
" when geometrytype(%1) IN ('LINESTRING','MULTILINESTRING') THEN 'LINESTRING'"
977-
" when geometrytype(%1) IN ('POLYGON','MULTIPOLYGON') THEN 'POLYGON'"
975+
" when upper(geometrytype(%1)) IN ('POINT','MULTIPOINT') THEN 'POINT'"
976+
" when upper(geometrytype(%1)) IN ('LINESTRING','MULTILINESTRING') THEN 'LINESTRING'"
977+
" when upper(geometrytype(%1)) IN ('POLYGON','MULTIPOLYGON') THEN 'POLYGON'"
978978
" end "
979979
"from " ).arg( "\"" + columns[i] + "\"" );
980980
if ( mUseEstimatedMetadata )

src/providers/postgres/qgspostgresprovider.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3213,7 +3213,7 @@ bool QgsPostgresProvider::getGeometryDetails()
32133213
}
32143214
}
32153215

3216-
sql = QString( "select type,srid from geometry_columns"
3216+
sql = QString( "select upper(type),srid from geometry_columns"
32173217
" where f_table_name=%1 and f_geometry_column=%2 and f_table_schema=%3" )
32183218
.arg( quotedValue( tableName ) )
32193219
.arg( quotedValue( geomCol ) )
@@ -3257,7 +3257,7 @@ bool QgsPostgresProvider::getGeometryDetails()
32573257
// Didn't find what we need in the geometry_columns table, so
32583258
// get stuff from the relevant column instead. This may (will?)
32593259
// fail if there is no data in the relevant table.
3260-
sql = QString( "select %1(%2),geometrytype(%2) from %3" )
3260+
sql = QString( "select %1(%2),upper(geometrytype(%2)) from %3" )
32613261
.arg( connectionRO->majorVersion() < 2 ? "srid" : "st_srid" )
32623262
.arg( quotedIdentifier( geometryColumn ) )
32633263
.arg( mQuery );
@@ -3287,9 +3287,9 @@ bool QgsPostgresProvider::getGeometryDetails()
32873287
// check to see if there is a unique geometry type
32883288
sql = QString( "select distinct "
32893289
"case"
3290-
" when geometrytype(%1) IN ('POINT','MULTIPOINT') THEN 'POINT'"
3291-
" when geometrytype(%1) IN ('LINESTRING','MULTILINESTRING') THEN 'LINESTRING'"
3292-
" when geometrytype(%1) IN ('POLYGON','MULTIPOLYGON') THEN 'POLYGON'"
3290+
" when upper(geometrytype(%1)) IN ('POINT','MULTIPOINT') THEN 'POINT'"
3291+
" when upper(geometrytype(%1)) IN ('LINESTRING','MULTILINESTRING') THEN 'LINESTRING'"
3292+
" when upper(geometrytype(%1)) IN ('POLYGON','MULTIPOLYGON') THEN 'POLYGON'"
32933293
" end "
32943294
"from " ).arg( quotedIdentifier( geometryColumn ) );
32953295
if ( mUseEstimatedMetadata )

0 commit comments

Comments
 (0)