Return a proper QgsProviderConnectionException from python table()

Fixes #39151
This commit is contained in:
Alessandro Pasotti 2020-10-03 09:06:44 +02:00 committed by Nyall Dawson
parent 096aa95ac7
commit b0189b4149
3 changed files with 10 additions and 2 deletions

View File

@ -487,7 +487,7 @@ Raises a QgsProviderConnectionException if any errors are encountered.
%End
virtual QgsAbstractDatabaseProviderConnection::TableProperty table( const QString &schema, const QString &table ) const;
virtual QgsAbstractDatabaseProviderConnection::TableProperty table( const QString &schema, const QString &table ) const throw( QgsProviderConnectionException );
%Docstring
Returns information on a ``table`` in the given ``schema``.
Raises a QgsProviderConnectionException if any errors are encountered or if the table does not exist.

View File

@ -526,7 +526,7 @@ class CORE_EXPORT QgsAbstractDatabaseProviderConnection : public QgsAbstractProv
* \note Not available in Python bindings
* \since QGIS 3.12
*/
virtual QgsAbstractDatabaseProviderConnection::TableProperty table( const QString &schema, const QString &table ) const;
virtual QgsAbstractDatabaseProviderConnection::TableProperty table( const QString &schema, const QString &table ) const SIP_THROW( QgsProviderConnectionException );
/**
* Returns information on the tables in the given schema.

View File

@ -354,6 +354,14 @@ IMPORT FOREIGN SCHEMA qgis_test LIMIT TO ( "someData" )
'out_db',
'spatial_index'}))
def test_exceptions(self):
"""Test that exception are converted to Python QgsProviderConnectionException"""
md = QgsProviderRegistry.instance().providerMetadata('postgres')
conn = md.createConnection(self.uri, {})
with self.assertRaises(QgsProviderConnectionException):
conn.table('my_not_existent_schema', 'my_not_existent_table')
if __name__ == '__main__':
unittest.main()