Skip to content

Commit 6638569

Browse files
committed
oracle provider: allow switching workspaces through property
(cherry picked from commit 2dc448dfb8c568c20e69fc9e3955e5df63d9a880)
1 parent 33ee514 commit 6638569

File tree

2 files changed

+41
-1
lines changed

2 files changed

+41
-1
lines changed

src/providers/oracle/qgsoracleprovider.cpp

+30-1
Original file line numberDiff line numberDiff line change
@@ -207,6 +207,35 @@ QgsOracleProvider::~QgsOracleProvider()
207207
disconnectDb();
208208
}
209209

210+
QString QgsOracleProvider::getWorkspace() const
211+
{
212+
return mUri.param( "dbworkspace" );
213+
}
214+
215+
void QgsOracleProvider::setWorkspace( const QString &workspace )
216+
{
217+
QgsDataSourceUri prevUri( mUri );
218+
219+
disconnectDb();
220+
221+
if ( workspace.isEmpty() )
222+
mUri.removeParam( "dbworkspace" );
223+
else
224+
mUri.setParam( "dbworkspace", workspace );
225+
226+
mConnection = QgsOracleConn::connectDb( mUri );
227+
if ( !mConnection )
228+
{
229+
mUri = prevUri;
230+
QgsDebugMsg( QString( "restoring previous uri:%1" ).arg( mUri.uri() ) );
231+
mConnection = QgsOracleConn::connectDb( mUri );
232+
}
233+
else
234+
{
235+
setDataSourceUri( mUri.uri() );
236+
}
237+
}
238+
210239
QgsAbstractFeatureSource *QgsOracleProvider::featureSource() const
211240
{
212241
return new QgsOracleFeatureSource( this );
@@ -2381,7 +2410,7 @@ bool QgsOracleProvider::getGeometryDetails()
23812410
}
23822411

23832412
if ( exec( qry, QString( mUseEstimatedMetadata
2384-
? "SELECT DISTINCT gtype FROM (SELECT t.%1.sdo_gtype AS gtype FROM %2 t WHERE t.%1 IS NOT NULL AND rownum<1000) WHERE rownum<=2"
2413+
? "SELECT DISTINCT gtype FROM (SELECT t.%1.sdo_gtype AS gtype FROM %2 t WHERE t.%1 IS NOT NULL AND rownum<100) WHERE rownum<=2"
23852414
: "SELECT DISTINCT t.%1.sdo_gtype FROM %2 t WHERE t.%1 IS NOT NULL AND rownum<=2" ).arg( quotedIdentifier( geomCol ) ).arg( mQuery ) ) )
23862415
{
23872416
if ( qry.next() )

src/providers/oracle/qgsoracleprovider.h

+11
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ enum QgsOraclePrimaryKeyType
5656
class QgsOracleProvider : public QgsVectorDataProvider
5757
{
5858
Q_OBJECT
59+
Q_PROPERTY( QString workspace READ getWorkspace WRITE setWorkspace )
5960

6061
public:
6162

@@ -283,6 +284,16 @@ class QgsOracleProvider : public QgsVectorDataProvider
283284
*/
284285
virtual bool isSaveAndLoadStyleToDBSupported() const override { return true; }
285286

287+
/**
288+
* Switch to oracle workspace
289+
*/
290+
void setWorkspace( const QString &workspace );
291+
292+
/**
293+
* Retrieve oracle workspace name
294+
*/
295+
QString getWorkspace() const;
296+
286297
private:
287298
QString whereClause( QgsFeatureId featureId ) const;
288299
QString pkParamWhereClause() const;

0 commit comments

Comments
 (0)