@@ -720,7 +720,7 @@ bool QgsOracleProvider::loadFields()
720
720
if ( field.name () == mGeometryColumn )
721
721
continue ;
722
722
723
- if ( !types.contains ( field.name () ) )
723
+ if ( !mIsQuery && ! types.contains ( field.name () ) )
724
724
continue ;
725
725
726
726
mAttributeFields .append ( QgsField ( field.name (), field.type (), types.value ( field.name () ), field.length (), field.precision (), comments.value ( field.name () ) ) );
@@ -816,24 +816,6 @@ bool QgsOracleProvider::hasSufficientPermsAndCapabilities()
816
816
return false ;
817
817
}
818
818
819
- // get a new alias for the subquery
820
- int index = 0 ;
821
- QString alias;
822
- QRegExp regex;
823
- do
824
- {
825
- alias = QString ( " subQuery_%1" ).arg ( QString::number ( index++ ) );
826
- QString pattern = QString ( " (\\\" ?)%1\\ 1" ).arg ( QRegExp::escape ( alias ) );
827
- regex.setPattern ( pattern );
828
- regex.setCaseSensitivity ( Qt::CaseInsensitive );
829
- }
830
- while ( mQuery .contains ( regex ) );
831
-
832
- // convert the custom query into a subquery
833
- mQuery = QString ( " %1 AS %2" )
834
- .arg ( mQuery )
835
- .arg ( quotedIdentifier ( alias ) );
836
-
837
819
if ( !exec ( qry, QString ( " SELECT * FROM %1 WHERE 1=0" ).arg ( mQuery ) ) )
838
820
{
839
821
QgsMessageLog::logMessage ( tr ( " Unable to execute the query.\n The error message from the database was:\n %1.\n SQL: %2" )
@@ -953,7 +935,11 @@ bool QgsOracleProvider::determinePrimaryKey()
953
935
QString primaryKey = mUri .keyColumn ();
954
936
int idx = fieldNameIndex ( mUri .keyColumn () );
955
937
956
- if ( idx >= 0 && ( mAttributeFields [idx].type () == QVariant::Int || mAttributeFields [idx].type () == QVariant::LongLong ) )
938
+ if ( idx >= 0 && (
939
+ mAttributeFields [idx].type () == QVariant::Int ||
940
+ mAttributeFields [idx].type () == QVariant::LongLong ||
941
+ mAttributeFields [idx].type () == QVariant::Double
942
+ ) )
957
943
{
958
944
if ( mUseEstimatedMetadata || uniqueData ( mQuery , primaryKey ) )
959
945
{
@@ -1505,7 +1491,7 @@ bool QgsOracleProvider::addAttributes( const QList<QgsField> &attributes )
1505
1491
returnvalue = false ;
1506
1492
}
1507
1493
1508
- if ( !loadFields () )
1494
+ if ( !loadFields () )
1509
1495
{
1510
1496
QgsMessageLog::logMessage ( tr ( " Could not reload fields." ), tr ( " Oracle" ) );
1511
1497
}
@@ -1568,7 +1554,7 @@ bool QgsOracleProvider::deleteAttributes( const QgsAttributeIds& ids )
1568
1554
returnvalue = false ;
1569
1555
}
1570
1556
1571
- if ( !loadFields () )
1557
+ if ( !loadFields () )
1572
1558
{
1573
1559
QgsMessageLog::logMessage ( tr ( " Could not reload fields." ), tr ( " Oracle" ) );
1574
1560
}
@@ -2096,6 +2082,12 @@ bool QgsOracleProvider::getGeometryDetails()
2096
2082
QGis::WkbType detectedType = QGis::WKBUnknown;
2097
2083
mSpatialIndex = QString::null;
2098
2084
2085
+ if ( mIsQuery )
2086
+ {
2087
+ detectedSrid = mSrid ;
2088
+ detectedType = mRequestedGeomType ;
2089
+ }
2090
+
2099
2091
if ( !ownerName.isEmpty () )
2100
2092
{
2101
2093
if ( exec ( qry, QString ( " SELECT srid FROM mdsys.all_sdo_geom_metadata WHERE owner=%1 AND table_name=%2 AND column_name=%3" )
0 commit comments