Fix error retrieval

This commit is contained in:
Nyall Dawson 2022-02-16 10:30:16 +10:00
parent 118b3d32c1
commit dfac7df6fa
2 changed files with 10 additions and 3 deletions

View File

@ -281,13 +281,15 @@ void QgsOgrProviderConnection::addFieldDomain( const QgsFieldDomain &domain, con
{
if ( OGRFieldDomainH ogrDomain = QgsOgrUtils::convertFieldDomain( &domain ) )
{
char **failureReason = nullptr;
if ( !GDALDatasetAddFieldDomain( hDS.get(), ogrDomain, failureReason ) )
char *failureReason = nullptr;
if ( !GDALDatasetAddFieldDomain( hDS.get(), ogrDomain, &failureReason ) )
{
OGR_FldDomain_Destroy( ogrDomain );
QString error( failureReason ? *failureReason : nullptr );
QString error( failureReason );
CPLFree( failureReason );
throw QgsProviderConnectionException( QObject::tr( "Could not create field domain: %1" ).arg( error ) );
}
CPLFree( failureReason );
OGR_FldDomain_Destroy( ogrDomain );
}
else

View File

@ -223,6 +223,11 @@ class TestPyQgsProviderConnectionGpkg(unittest.TestCase, TestPyQgsProviderConnec
self.assertEqual(res.minimum(), 5)
self.assertEqual(res.maximum(), 15)
# try adding another with a duplicate name, should fail
with self.assertRaises(QgsProviderConnectionException) as e:
conn.addFieldDomain(domain, '')
self.assertEqual(str(e.exception), 'Could not create field domain: A domain of identical name already exists')
domain = QgsGlobFieldDomain('my new glob domain', 'my new glob desc', QVariant.String, '*aaabc*')
conn.addFieldDomain(domain, '')