[QGIS Commit] r13336 - trunk/qgis/src/core
svn_qgis at osgeo.org
svn_qgis at osgeo.org
Tue Apr 20 10:54:51 EDT 2010
Author: jef
Date: 2010-04-20 10:54:50 -0400 (Tue, 20 Apr 2010)
New Revision: 13336
Modified:
trunk/qgis/src/core/qgsdatasourceuri.cpp
trunk/qgis/src/core/qgsdatasourceuri.h
Log:
improve database uri quoting (eg. for table names with quotes)
Modified: trunk/qgis/src/core/qgsdatasourceuri.cpp
===================================================================
--- trunk/qgis/src/core/qgsdatasourceuri.cpp 2010-04-20 14:02:10 UTC (rev 13335)
+++ trunk/qgis/src/core/qgsdatasourceuri.cpp 2010-04-20 14:54:50 UTC (rev 13336)
@@ -306,12 +306,12 @@
mSchema = "";
}
-QString QgsDataSourceURI::escape( const QString &theVal ) const
+QString QgsDataSourceURI::escape( const QString &theVal, QChar delim = '\'' ) const
{
QString val = theVal;
val.replace( "\\", "\\\\" );
- val.replace( "\'", "\\'" );
+ val.replace( delim, QString( "\\%1" ).arg( delim ) );
return val;
}
@@ -349,7 +349,7 @@
i++;
if ( i == uri.length() )
continue;
- if ( uri[i] != '\'' && uri[i] != '\\' )
+ if ( uri[i] != delim && uri[i] != '\\' )
i--;
}
else if ( uri[i] == delim )
@@ -449,10 +449,13 @@
QString QgsDataSourceURI::quotedTablename() const
{
- if ( mSchema != "" )
- return QString( "\"%1\".\"%2\"" ).arg( mSchema ).arg( mTable );
+ if ( !mSchema.isEmpty() )
+ return QString( "\"%1\".\"%2\"" )
+ .arg( escape( mSchema, '"' ) )
+ .arg( escape( mTable, '"' ) );
else
- return QString( "\"%1\"" ).arg( mTable );
+ return QString( "\"%1\"" )
+ .arg( escape( mTable, '"' ) );
}
void QgsDataSourceURI::setConnection( const QString &host,
Modified: trunk/qgis/src/core/qgsdatasourceuri.h
===================================================================
--- trunk/qgis/src/core/qgsdatasourceuri.h 2010-04-20 14:02:10 UTC (rev 13335)
+++ trunk/qgis/src/core/qgsdatasourceuri.h 2010-04-20 14:54:50 UTC (rev 13336)
@@ -107,7 +107,7 @@
private:
void skipBlanks( const QString &uri, int &i );
QString getValue( const QString &uri, int &i );
- QString escape( const QString &uri ) const;
+ QString escape( const QString &uri, QChar delim ) const;
/* data */
@@ -123,7 +123,7 @@
QString mTable;
//! geometry column
QString mGeometryColumn;
- //! SQL where clause used to limit features returned from the layer
+ //! SQL query or where clause used to limit features returned from the layer
QString mSql;
//! username
QString mUsername;
More information about the QGIS-commit
mailing list