@@ -306,12 +306,12 @@ void QgsDataSourceURI::clearSchema()
306
306
mSchema = " " ;
307
307
}
308
308
309
- QString QgsDataSourceURI::escape ( const QString &theVal ) const
309
+ QString QgsDataSourceURI::escape ( const QString &theVal, QChar delim = ' \' ' ) const
310
310
{
311
311
QString val = theVal;
312
312
313
313
val.replace ( " \\ " , " \\\\ " );
314
- val.replace ( " \' " , " \\ ' " );
314
+ val.replace ( delim, QString ( " \\ %1 " ). arg ( delim ) );
315
315
316
316
return val;
317
317
}
@@ -349,7 +349,7 @@ QString QgsDataSourceURI::getValue( const QString &uri, int &i )
349
349
i++;
350
350
if ( i == uri.length () )
351
351
continue ;
352
- if ( uri[i] != ' \' ' && uri[i] != ' \\ ' )
352
+ if ( uri[i] != delim && uri[i] != ' \\ ' )
353
353
i--;
354
354
}
355
355
else if ( uri[i] == delim )
@@ -449,10 +449,13 @@ QString QgsDataSourceURI::uri() const
449
449
450
450
QString QgsDataSourceURI::quotedTablename () const
451
451
{
452
- if ( mSchema != " " )
453
- return QString ( " \" %1\" .\" %2\" " ).arg ( mSchema ).arg ( mTable );
452
+ if ( !mSchema .isEmpty () )
453
+ return QString ( " \" %1\" .\" %2\" " )
454
+ .arg ( escape ( mSchema , ' "' ) )
455
+ .arg ( escape ( mTable , ' "' ) );
454
456
else
455
- return QString ( " \" %1\" " ).arg ( mTable );
457
+ return QString ( " \" %1\" " )
458
+ .arg ( escape ( mTable , ' "' ) );
456
459
}
457
460
458
461
void QgsDataSourceURI::setConnection ( const QString &host,
0 commit comments