Skip to content

Commit a6351e5

Browse files
committedJul 6, 2011
add support for mixed case geometry types of PostGIS 2.0

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 ) )
@@ -971,9 +971,9 @@ void QgsGeomColumnTypeThread::getLayerTypes()
971971
{
972972
QString query = QString( "select distinct "
973973
"case"
974-
" when geometrytype(%1) IN ('POINT','MULTIPOINT') THEN 'POINT'"
975-
" when geometrytype(%1) IN ('LINESTRING','MULTILINESTRING') THEN 'LINESTRING'"
976-
" when geometrytype(%1) IN ('POLYGON','MULTIPOLYGON') THEN 'POLYGON'"
974+
" when upper(geometrytype(%1)) IN ('POINT','MULTIPOINT') THEN 'POINT'"
975+
" when upper(geometrytype(%1)) IN ('LINESTRING','MULTILINESTRING') THEN 'LINESTRING'"
976+
" when upper(geometrytype(%1)) IN ('POLYGON','MULTIPOLYGON') THEN 'POLYGON'"
977977
" end "
978978
"from " ).arg( "\"" + columns[i] + "\"" );
979979
if ( mUseEstimatedMetadata )

‎src/providers/postgres/qgspostgresprovider.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3160,7 +3160,7 @@ bool QgsPostgresProvider::getGeometryDetails()
31603160
}
31613161
}
31623162

3163-
sql = QString( "select type,srid from geometry_columns"
3163+
sql = QString( "select upper(type),srid from geometry_columns"
31643164
" where f_table_name=%1 and f_geometry_column=%2 and f_table_schema=%3" )
31653165
.arg( quotedValue( tableName ) )
31663166
.arg( quotedValue( geomCol ) )
@@ -3204,7 +3204,7 @@ bool QgsPostgresProvider::getGeometryDetails()
32043204
// Didn't find what we need in the geometry_columns table, so
32053205
// get stuff from the relevant column instead. This may (will?)
32063206
// fail if there is no data in the relevant table.
3207-
sql = QString( "select %1(%2),geometrytype(%2) from %3" )
3207+
sql = QString( "select %1(%2),upper(geometrytype(%2)) from %3" )
32083208
.arg( connectionRO->majorVersion() < 2 ? "srid" : "st_srid" )
32093209
.arg( quotedIdentifier( geometryColumn ) )
32103210
.arg( mQuery );
@@ -3234,9 +3234,9 @@ bool QgsPostgresProvider::getGeometryDetails()
32343234
// check to see if there is a unique geometry type
32353235
sql = QString( "select distinct "
32363236
"case"
3237-
" when geometrytype(%1) IN ('POINT','MULTIPOINT') THEN 'POINT'"
3238-
" when geometrytype(%1) IN ('LINESTRING','MULTILINESTRING') THEN 'LINESTRING'"
3239-
" when geometrytype(%1) IN ('POLYGON','MULTIPOLYGON') THEN 'POLYGON'"
3237+
" when upper(geometrytype(%1)) IN ('POINT','MULTIPOINT') THEN 'POINT'"
3238+
" when upper(geometrytype(%1)) IN ('LINESTRING','MULTILINESTRING') THEN 'LINESTRING'"
3239+
" when upper(geometrytype(%1)) IN ('POLYGON','MULTIPOLYGON') THEN 'POLYGON'"
32403240
" end "
32413241
"from " ).arg( quotedIdentifier( geometryColumn ) );
32423242
if ( mUseEstimatedMetadata )

0 commit comments

Comments
 (0)
Please sign in to comment.