Skip to content

Commit

Permalink
add support for checkPrimaryKeyUnicity parameter in decodeUri() for
Browse files Browse the repository at this point in the history
PostgreSQL dataprovider
  • Loading branch information
alexbruy committed Feb 21, 2025
1 parent bb4962e commit fcf7c87
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 5 deletions.
7 changes: 2 additions & 5 deletions src/providers/postgres/qgspostgresprovider.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -5688,10 +5688,8 @@ QVariantMap QgsPostgresProviderMetadata::decodeUri( const QString &uri ) const
uriParts[QStringLiteral( "authcfg" )] = dsUri.authConfigId();
if ( dsUri.wkbType() != Qgis::WkbType::Unknown )
uriParts[QStringLiteral( "type" )] = static_cast<quint32>( dsUri.wkbType() );

if ( uri.contains( QStringLiteral( "selectatid=" ), Qt::CaseSensitivity::CaseInsensitive ) )
uriParts[QStringLiteral( "selectatid" )] = !dsUri.selectAtIdDisabled();

if ( !dsUri.table().isEmpty() )
uriParts[QStringLiteral( "table" )] = dsUri.table();
if ( !dsUri.schema().isEmpty() )
Expand All @@ -5700,15 +5698,14 @@ QVariantMap QgsPostgresProviderMetadata::decodeUri( const QString &uri ) const
uriParts[QStringLiteral( "key" )] = dsUri.keyColumn();
if ( !dsUri.srid().isEmpty() )
uriParts[QStringLiteral( "srid" )] = dsUri.srid();

if ( uri.contains( QStringLiteral( "estimatedmetadata=" ), Qt::CaseSensitivity::CaseInsensitive ) )
uriParts[QStringLiteral( "estimatedmetadata" )] = dsUri.useEstimatedMetadata();

if ( uri.contains( QStringLiteral( "sslmode=" ), Qt::CaseSensitivity::CaseInsensitive ) )
uriParts[QStringLiteral( "sslmode" )] = dsUri.sslMode();

if ( !dsUri.sql().isEmpty() )
uriParts[QStringLiteral( "sql" )] = dsUri.sql();
if ( !dsUri.param( QStringLiteral( "checkPrimaryKeyUnicity" ) ).isEmpty() )
uriParts[QStringLiteral( "checkPrimaryKeyUnicity" )] = dsUri.param( QStringLiteral( "checkPrimaryKeyUnicity" ) );
if ( !dsUri.geometryColumn().isEmpty() )
uriParts[QStringLiteral( "geometrycolumn" )] = dsUri.geometryColumn();

Expand Down
22 changes: 22 additions & 0 deletions tests/src/python/test_provider_postgres.py
Original file line number Diff line number Diff line change
Expand Up @@ -3535,6 +3535,7 @@ def testEncodeDecodeUri(self):
"table": "copas1",
"type": 6,
"username": "myuser",
"checkPrimaryKeyUnicity": 1,
},
)

Expand All @@ -3558,6 +3559,27 @@ def testEncodeDecodeUri(self):
"dbname='qgis_tests' user='myuser' srid=3763 estimatedmetadata='true' host='localhost' key='id' port='5432' sslmode='disable' type='MultiPolygon' table=\"public\".\"copas1\" (geom)",
)

self.assertEqual(
md.encodeUri(
{
"dbname": "qgis_tests",
"estimatedmetadata": True,
"geometrycolumn": "geom",
"host": "localhost",
"key": "id",
"port": "5432",
"schema": "public",
"srid": "3763",
"sslmode": 1,
"table": "copas1",
"type": 6,
"username": "myuser",
"checkPrimaryKeyUnicity": 1,
}
),
"dbname='qgis_tests' user='myuser' srid=3763 estimatedmetadata='true' host='localhost' key='id' port='5432' sslmode='disable' type='MultiPolygon' checkPrimaryKeyUnicity='1' table=\"public\".\"copas1\" (geom)",
)

self.assertEqual(
md.encodeUri(
{
Expand Down

0 comments on commit fcf7c87

Please sign in to comment.