mirror of
https://github.com/qgis/QGIS.git
synced 2025-10-15 00:02:52 -04:00
ogr provider update: better support column names containing international characters
git-svn-id: http://svn.osgeo.org/qgis/trunk@9415 c8812cc2-4d05-0410-92ff-de0c093fc19c
This commit is contained in:
parent
d9f3afa4e9
commit
c23a4d9892
@ -1263,11 +1263,14 @@ void QgsOgrProvider::uniqueValues( int index, QList<QVariant> &uniqueValues )
|
|||||||
if ( !fi.exists() )
|
if ( !fi.exists() )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
QString sql = QString( "SELECT DISTINCT %1 FROM %2 ORDER BY %1" ).arg( fld.name() ).arg( fi.baseName() );
|
QString sql = QString( "SELECT DISTINCT %1 FROM %2 ORDER BY %1" )
|
||||||
|
.arg( quotedIdentifier( fld.name() ) )
|
||||||
|
.arg( quotedIdentifier( fi.baseName() ) );
|
||||||
|
|
||||||
uniqueValues.clear();
|
uniqueValues.clear();
|
||||||
|
|
||||||
OGRLayerH lyr = OGR_DS_ExecuteSQL( ogrDataSource, sql.toAscii(), NULL, "SQL" );
|
QgsDebugMsg( QString( "SQL: %1" ).arg( sql ) );
|
||||||
|
OGRLayerH lyr = OGR_DS_ExecuteSQL( ogrDataSource, mEncoding->fromUnicode( sql ).data(), NULL, "SQL" );
|
||||||
if ( 0 == lyr )
|
if ( 0 == lyr )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@ -1290,9 +1293,11 @@ QVariant QgsOgrProvider::minimumValue( int index )
|
|||||||
if ( !fi.exists() )
|
if ( !fi.exists() )
|
||||||
return QVariant();
|
return QVariant();
|
||||||
|
|
||||||
QString sql = QString( "SELECT MIN(%1) FROM %2" ).arg( fld.name() ).arg( fi.baseName() );
|
QString sql = QString( "SELECT MIN(%1) FROM %2" )
|
||||||
|
.arg( quotedIdentifier( fld.name() ) )
|
||||||
|
.arg( quotedIdentifier( fi.baseName() ) );
|
||||||
|
|
||||||
OGRLayerH l = OGR_DS_ExecuteSQL( ogrDataSource, sql.toAscii(), NULL, "SQL" );
|
OGRLayerH l = OGR_DS_ExecuteSQL( ogrDataSource, mEncoding->fromUnicode( sql ).data(), NULL, "SQL" );
|
||||||
|
|
||||||
if ( l == 0 )
|
if ( l == 0 )
|
||||||
return QVariant();
|
return QVariant();
|
||||||
@ -1319,9 +1324,11 @@ QVariant QgsOgrProvider::maximumValue( int index )
|
|||||||
if ( !fi.exists() )
|
if ( !fi.exists() )
|
||||||
return QVariant();
|
return QVariant();
|
||||||
|
|
||||||
QString sql = QString( "SELECT MAX(%1) FROM %2" ).arg( fld.name() ).arg( fi.baseName() );
|
QString sql = QString( "SELECT MAX(%1) FROM %2" )
|
||||||
|
.arg( quotedIdentifier( fld.name() ) )
|
||||||
|
.arg( quotedIdentifier( fi.baseName() ) );
|
||||||
|
|
||||||
OGRLayerH l = OGR_DS_ExecuteSQL( ogrDataSource, sql.toAscii(), NULL, "SQL" );
|
OGRLayerH l = OGR_DS_ExecuteSQL( ogrDataSource, mEncoding->fromUnicode( sql ).data(), NULL, "SQL" );
|
||||||
if ( l == 0 )
|
if ( l == 0 )
|
||||||
return QVariant();
|
return QVariant();
|
||||||
|
|
||||||
@ -1339,3 +1346,11 @@ QVariant QgsOgrProvider::maximumValue( int index )
|
|||||||
|
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QString QgsOgrProvider::quotedIdentifier( QString field )
|
||||||
|
{
|
||||||
|
field.replace( '\\', "\\\\" );
|
||||||
|
field.replace( '"', "\\\"" );
|
||||||
|
field.replace( "'", "\\'" );
|
||||||
|
return field.prepend( "\"" ).append( "\"" );
|
||||||
|
}
|
||||||
|
@ -251,4 +251,6 @@ class QgsOgrProvider : public QgsVectorDataProvider
|
|||||||
bool addFeature( QgsFeature& f );
|
bool addFeature( QgsFeature& f );
|
||||||
/**Deletes one feature*/
|
/**Deletes one feature*/
|
||||||
bool deleteFeature( int id );
|
bool deleteFeature( int id );
|
||||||
|
|
||||||
|
QString quotedIdentifier( QString field );
|
||||||
};
|
};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user