From e4ec4e34737cbd51cdf964b7ec1b37fe6901d88d Mon Sep 17 00:00:00 2001 From: nirvn Date: Tue, 13 Sep 2016 11:04:33 +0700 Subject: [PATCH] [delimitertext] fix watcher check ignored and harmful watcher created for iterator (fixes #15558) (cherry-picked from b3e31087181732f7511d047b98352e97f08b0d04) --- .../delimitedtext/qgsdelimitedtextfeatureiterator.cpp | 10 +++++++++- src/providers/delimitedtext/qgsdelimitedtextfile.cpp | 10 +++++----- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/src/providers/delimitedtext/qgsdelimitedtextfeatureiterator.cpp b/src/providers/delimitedtext/qgsdelimitedtextfeatureiterator.cpp index 55a45a55f188..a1447114d657 100644 --- a/src/providers/delimitedtext/qgsdelimitedtextfeatureiterator.cpp +++ b/src/providers/delimitedtext/qgsdelimitedtextfeatureiterator.cpp @@ -502,8 +502,16 @@ QgsDelimitedTextFeatureSource::QgsDelimitedTextFeatureSource( const QgsDelimited , mXyDms( p->mXyDms ) , attributeColumns( p->attributeColumns ) { + QUrl url = p->mFile->url(); + + // make sure watcher not created when using iterator (e.g. for rendering, see issue #15558) + if ( url.hasQueryItem( "watchFile" ) ) + { + url.removeQueryItem( "watchFile" ); + } + mFile = new QgsDelimitedTextFile(); - mFile->setFromUrl( p->mFile->url() ); + mFile->setFromUrl( url ); mExpressionContext << QgsExpressionContextUtils::globalScope() << QgsExpressionContextUtils::projectScope(); diff --git a/src/providers/delimitedtext/qgsdelimitedtextfile.cpp b/src/providers/delimitedtext/qgsdelimitedtextfile.cpp index a68bc447d19d..8b37fe632387 100644 --- a/src/providers/delimitedtext/qgsdelimitedtextfile.cpp +++ b/src/providers/delimitedtext/qgsdelimitedtextfile.cpp @@ -35,7 +35,7 @@ QgsDelimitedTextFile::QgsDelimitedTextFile( const QString& url ) , mEncoding( "UTF-8" ) , mFile( nullptr ) , mStream( nullptr ) - , mUseWatcher( true ) + , mUseWatcher( false ) , mWatcher( nullptr ) , mDefinitionValid( false ) , mUseHeader( true ) @@ -158,9 +158,9 @@ bool QgsDelimitedTextFile::setFromUrl( const QUrl &url ) } // - if ( url.hasQueryItem( "useWatcher" ) ) + if ( url.hasQueryItem( "watchFile" ) ) { - mUseWatcher = ! url.queryItemValue( "useWatcher" ).toUpper().startsWith( 'N' ); + mUseWatcher = url.queryItemValue( "watchFile" ).toUpper().startsWith( 'Y' ); } // The default type is csv, to be consistent with the @@ -269,9 +269,9 @@ QUrl QgsDelimitedTextFile::url() url.addQueryItem( "encoding", mEncoding ); } - if ( !mUseWatcher ) + if ( mUseWatcher ) { - url.addQueryItem( "useWatcher", "no" ); + url.addQueryItem( "watchFile", "yes" ); } url.addQueryItem( "type", type() );