Skip to content

Commit

Permalink
Add schemas listing capabilities
Browse files Browse the repository at this point in the history
  • Loading branch information
troopa81 authored and nyalldawson committed Jan 29, 2021
1 parent 15ee602 commit 55fe3cd
Show file tree
Hide file tree
Showing 4 changed files with 23 additions and 1 deletion.
13 changes: 13 additions & 0 deletions src/providers/oracle/qgsoracleproviderconnection.cpp
Expand Up @@ -104,6 +104,7 @@ void QgsOracleProviderConnection::setDefaultCapabilities()
Capability::ExecuteSql,
Capability::SqlLayers,
Capability::Tables,
Capability::Schemas,
Capability::Spatial,
Capability::TableExists,
Capability::CreateSpatialIndex,
Expand Down Expand Up @@ -444,3 +445,15 @@ QIcon QgsOracleProviderConnection::icon() const
{
return QgsApplication::getThemeIcon( QStringLiteral( "mIconOracle.svg" ) );
}

QStringList QgsOracleProviderConnection::schemas( ) const
{
checkCapability( Capability::Schemas );
QStringList schemas;

QList<QVariantList> users = executeSqlPrivate( QStringLiteral( "SELECT USERNAME FROM ALL_USERS" ) ).rows();
for ( QVariantList userInfos : users )
schemas << userInfos.at( 0 ).toString();

return schemas;
}
1 change: 1 addition & 0 deletions src/providers/oracle/qgsoracleproviderconnection.h
Expand Up @@ -65,6 +65,7 @@ class QgsOracleProviderConnection : public QgsAbstractDatabaseProviderConnection
void createSpatialIndex( const QString &schema, const QString &name, const QgsAbstractDatabaseProviderConnection::SpatialIndexOptions &options = QgsAbstractDatabaseProviderConnection::SpatialIndexOptions() ) const override;
bool spatialIndexExists( const QString &schema, const QString &name, const QString &geometryColumn ) const override;
void deleteSpatialIndex( const QString &schema, const QString &name, const QString &geometryColumn ) const override;
QStringList schemas() const;
QList<QgsAbstractDatabaseProviderConnection::TableProperty> tables( const QString &schema,
const TableFlags &flags = TableFlags() ) const override;
void store( const QString &name ) const override;
Expand Down
3 changes: 2 additions & 1 deletion tests/src/python/test_qgsproviderconnection_base.py
Expand Up @@ -151,7 +151,8 @@ def _test_operations(self, md, conn):
if capabilities & QgsAbstractDatabaseProviderConnection.CreateSchema:
schema = 'myNewSchema'
conn.createSchema(schema)
else:

elif capabilities & QgsAbstractDatabaseProviderConnection.Schemas:
schema = self.defaultSchema

# Start clean
Expand Down
7 changes: 7 additions & 0 deletions tests/src/python/test_qgsproviderconnection_oracle.py
Expand Up @@ -166,6 +166,13 @@ def test_pkcols(self):
self.assertEqual(sorted(tables_dict['SOME_DATA']), ['pk'])
self.assertEqual(sorted(tables_dict['POINT_DATA_IDENTITY']), ['pk'])

def test_schemas(self):
"""Test schemas retrieval"""

md = QgsProviderRegistry.instance().providerMetadata('oracle')
conn = md.createConnection(self.uri, {})
self.assertTrue('QGIS' in conn.schemas())


if __name__ == '__main__':
unittest.main()

0 comments on commit 55fe3cd

Please sign in to comment.