@@ -695,29 +695,31 @@ bool QgsOracleProvider::loadFields()
695
695
.arg ( qry.lastError ().text () ),
696
696
tr ( " Oracle" ) );
697
697
}
698
-
699
- if ( !mHasSpatialIndex )
700
- {
701
- mHasSpatialIndex = qry.exec ( QString ( " SELECT %2 FROM %1 WHERE sdo_filter(%2,mdsys.sdo_geometry(2003,%3,NULL,mdsys.sdo_elem_info_array(1,1003,3),mdsys.sdo_ordinate_array(-1,-1,1,1)))='TRUE'" )
702
- .arg ( mQuery )
703
- .arg ( quotedIdentifier ( mGeometryColumn ) )
704
- .arg ( mSrid < 1 ? " NULL" : QString::number ( mSrid ) ) );
705
- if ( !mHasSpatialIndex )
706
- {
707
- QgsMessageLog::logMessage ( tr ( " No spatial index on column %1.%2.%3 found - expect poor performance." )
708
- .arg ( mOwnerName )
709
- .arg ( mTableName )
710
- .arg ( mGeometryColumn ),
711
- tr ( " Oracle" ) );
712
- }
713
- }
714
698
}
715
699
716
- qry.finish ();
717
-
718
700
mEnabledCapabilities |= QgsVectorDataProvider::CreateSpatialIndex;
719
701
}
720
702
703
+ if ( !mGeometryColumn .isEmpty () )
704
+ {
705
+ if ( !mHasSpatialIndex )
706
+ {
707
+ mHasSpatialIndex = qry.exec ( QString ( " SELECT %2 FROM %1 WHERE sdo_filter(%2,mdsys.sdo_geometry(2003,%3,NULL,mdsys.sdo_elem_info_array(1,1003,3),mdsys.sdo_ordinate_array(-1,-1,1,1)))='TRUE'" )
708
+ .arg ( mQuery )
709
+ .arg ( quotedIdentifier ( mGeometryColumn ) )
710
+ .arg ( mSrid < 1 ? " NULL" : QString::number ( mSrid ) ) );
711
+ }
712
+
713
+ if ( !mHasSpatialIndex )
714
+ {
715
+ QgsMessageLog::logMessage ( tr ( " No spatial index on column %1 found - expect poor performance." )
716
+ .arg ( mGeometryColumn ),
717
+ tr ( " Oracle" ) );
718
+ }
719
+ }
720
+
721
+ qry.finish ();
722
+
721
723
if ( !exec ( qry, QString ( " SELECT * FROM %1 WHERE 1=0" ).arg ( mQuery ) ) )
722
724
{
723
725
QgsMessageLog::logMessage ( tr ( " Retrieving fields from '%1' failed [%2]" ).arg ( mQuery ).arg ( qry.lastError ().text () ), tr ( " Oracle" ) );
@@ -818,7 +820,6 @@ bool QgsOracleProvider::hasSufficientPermsAndCapabilities()
818
820
.arg ( qry.lastQuery () ),
819
821
tr ( " Oracle" ) );
820
822
}
821
-
822
823
}
823
824
else
824
825
{
@@ -2058,38 +2059,40 @@ QgsRectangle QgsOracleProvider::extent()
2058
2059
{
2059
2060
QString sql;
2060
2061
QSqlQuery qry ( *mConnection );
2062
+ bool ok = false ;
2061
2063
2062
- if ( mUseEstimatedMetadata )
2064
+ if ( ! mIsQuery )
2063
2065
{
2064
- if ( exec ( qry, QString ( " SELECT sdo_lb,sdo_ub FROM mdsys.all_sdo_geom_metadata m, table(m.diminfo) WHERE owner=%1 AND table_name=%2 AND column_name=%3 AND sdo_dimname='X'" )
2065
- .arg ( quotedValue ( mOwnerName ) )
2066
- .arg ( quotedValue ( mTableName ) )
2067
- .arg ( quotedValue ( mGeometryColumn ) ) ) && qry.next () )
2066
+ if ( mUseEstimatedMetadata )
2068
2067
{
2069
- mLayerExtent .setXMinimum ( qry.value ( 0 ).toDouble () );
2070
- mLayerExtent .setXMaximum ( qry.value ( 1 ).toDouble () );
2071
-
2072
- if ( exec ( qry, QString ( " SELECT sdo_lb,sdo_ub FROM mdsys.all_sdo_geom_metadata m, table(m.diminfo) WHERE owner=%1 AND table_name=%2 AND column_name=%3 AND sdo_dimname='Y'" )
2068
+ if ( exec ( qry, QString ( " SELECT sdo_lb,sdo_ub FROM mdsys.all_sdo_geom_metadata m, table(m.diminfo) WHERE owner=%1 AND table_name=%2 AND column_name=%3 AND sdo_dimname='X'" )
2073
2069
.arg ( quotedValue ( mOwnerName ) )
2074
2070
.arg ( quotedValue ( mTableName ) )
2075
- .arg ( quotedValue ( mGeometryColumn ) ) ) && qry.next () )
2071
+ .arg ( quotedValue ( mGeometryColumn ) ) ) && qry.next () )
2076
2072
{
2077
- mLayerExtent .setYMinimum ( qry.value ( 0 ).toDouble () );
2078
- mLayerExtent .setYMaximum ( qry.value ( 1 ).toDouble () );
2079
- return mLayerExtent ;
2073
+ mLayerExtent .setXMinimum ( qry.value ( 0 ).toDouble () );
2074
+ mLayerExtent .setXMaximum ( qry.value ( 1 ).toDouble () );
2075
+
2076
+ if ( exec ( qry, QString ( " SELECT sdo_lb,sdo_ub FROM mdsys.all_sdo_geom_metadata m, table(m.diminfo) WHERE owner=%1 AND table_name=%2 AND column_name=%3 AND sdo_dimname='Y'" )
2077
+ .arg ( quotedValue ( mOwnerName ) )
2078
+ .arg ( quotedValue ( mTableName ) )
2079
+ .arg ( quotedValue ( mGeometryColumn ) ) ) && qry.next () )
2080
+ {
2081
+ mLayerExtent .setYMinimum ( qry.value ( 0 ).toDouble () );
2082
+ mLayerExtent .setYMaximum ( qry.value ( 1 ).toDouble () );
2083
+ return mLayerExtent ;
2084
+ }
2080
2085
}
2081
2086
}
2082
- }
2083
-
2084
- bool ok = false ;
2085
2087
2086
- if ( mHasSpatialIndex && ( mUseEstimatedMetadata || mSqlWhereClause .isEmpty () ) )
2087
- {
2088
- sql = QString ( " SELECT SDO_TUNE.EXTENT_OF(%1,%2) FROM dual" )
2089
- .arg ( quotedValue ( QString ( " %1.%2" ).arg ( mOwnerName ).arg ( mTableName ) ) )
2090
- .arg ( quotedValue ( mGeometryColumn ) );
2088
+ if ( mHasSpatialIndex && ( mUseEstimatedMetadata || mSqlWhereClause .isEmpty () ) )
2089
+ {
2090
+ sql = QString ( " SELECT SDO_TUNE.EXTENT_OF(%1,%2) FROM dual" )
2091
+ .arg ( quotedValue ( QString ( " %1.%2" ).arg ( mOwnerName ).arg ( mTableName ) ) )
2092
+ .arg ( quotedValue ( mGeometryColumn ) );
2091
2093
2092
- ok = exec ( qry, sql );
2094
+ ok = exec ( qry, sql );
2095
+ }
2093
2096
}
2094
2097
2095
2098
if ( !ok )
0 commit comments