Skip to content

Commit 767d3b4

Browse files
committed
[ogr] Fix creating db connections from sources with vsi prefixes
As well as fixing the creation of the connection, this avoids a potentially lengthy hang when attempting to create the connection. This can present itself as a frozen QGIS when right-clicking a vector layer coming from a remote vsi source in the layer tree.
1 parent 25075a1 commit 767d3b4

File tree

1 file changed

+8
-1
lines changed

1 file changed

+8
-1
lines changed

src/core/providers/ogr/qgsogrproviderconnection.cpp

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,14 @@ QgsOgrProviderConnection::QgsOgrProviderConnection( const QString &uri, const QV
155155
const QVariantMap parts = QgsProviderRegistry::instance()->providerMetadata( QStringLiteral( "ogr" ) )->decodeUri( uri );
156156
if ( !parts.value( QStringLiteral( "path" ) ).toString().isEmpty() && parts.value( QStringLiteral( "path" ) ).toString() != uri )
157157
{
158-
setUri( parts.value( QStringLiteral( "path" ) ).toString() );
158+
QVariantMap cleanedParts;
159+
cleanedParts.insert( QStringLiteral( "path" ), parts.value( QStringLiteral( "path" ) ).toString() );
160+
161+
if ( !parts.value( QStringLiteral( "vsiPrefix" ) ).toString().isEmpty() )
162+
cleanedParts.insert( QStringLiteral( "vsiPrefix" ), parts.value( QStringLiteral( "vsiPrefix" ) ).toString() );
163+
164+
const QString cleanedUri = QgsProviderRegistry::instance()->providerMetadata( QStringLiteral( "ogr" ) )->encodeUri( cleanedParts );
165+
setUri( cleanedUri );
159166
}
160167
setDefaultCapabilities();
161168
}

0 commit comments

Comments
 (0)