Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
postgres provider: use min()/max() before casting (followup bf56457; f…
…ixes #12306)
  • Loading branch information
jef-n committed Mar 4, 2015
1 parent d9377e0 commit f7b790f
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 12 deletions.
15 changes: 8 additions & 7 deletions src/providers/postgres/qgspostgresconn.cpp
Expand Up @@ -1177,34 +1177,35 @@ qint64 QgsPostgresConn::getBinaryInt( QgsPostgresResult &queryResult, int row, i
return oid;
}

QString QgsPostgresConn::fieldExpression( const QgsField &fld )
QString QgsPostgresConn::fieldExpression( const QgsField &fld, QString expr )
{
const QString &type = fld.typeName();
expr = expr.arg( quotedIdentifier( fld.name() ) );
if ( type == "money" )
{
return QString( "cash_out(%1)" ).arg( quotedIdentifier( fld.name() ) );
return QString( "cash_out(%1)" ).arg( expr );
}
else if ( type.startsWith( "_" ) )
{
return QString( "array_out(%1)" ).arg( quotedIdentifier( fld.name() ) );
return QString( "array_out(%1)" ).arg( expr );
}
else if ( type == "bool" )
{
return QString( "boolout(%1)" ).arg( quotedIdentifier( fld.name() ) );
return QString( "boolout(%1)" ).arg( expr );
}
else if ( type == "geometry" )
{
return QString( "%1(%2)" )
.arg( majorVersion() < 2 ? "asewkt" : "st_asewkt" )
.arg( quotedIdentifier( fld.name() ) );
.arg( expr );
}
else if ( type == "geography" )
{
return QString( "st_astext(%1)" ).arg( quotedIdentifier( fld.name() ) );
return QString( "st_astext(%1)" ).arg( expr );
}
else
{
return quotedIdentifier( fld.name() ) + "::text";
return expr + "::text";
}
}

Expand Down
2 changes: 1 addition & 1 deletion src/providers/postgres/qgspostgresconn.h
Expand Up @@ -285,7 +285,7 @@ class QgsPostgresConn : public QObject

qint64 getBinaryInt( QgsPostgresResult &queryResult, int row, int col );

QString fieldExpression( const QgsField &fld );
QString fieldExpression( const QgsField &fld, QString expr = "%1" );

QString connInfo() const { return mConnInfo; }

Expand Down
8 changes: 4 additions & 4 deletions src/providers/postgres/qgspostgresprovider.cpp
Expand Up @@ -1237,8 +1237,8 @@ QVariant QgsPostgresProvider::minimumValue( int index )
{
// get the field name
const QgsField &fld = field( index );
QString sql = QString( "SELECT min(%1) FROM %2" )
.arg( connectionRO()->fieldExpression( fld ) )
QString sql = QString( "SELECT %1 FROM %2" )
.arg( connectionRO()->fieldExpression( fld, "min(%1)" ) )
.arg( mQuery );

if ( !mSqlWhereClause.isEmpty() )
Expand Down Expand Up @@ -1410,8 +1410,8 @@ QVariant QgsPostgresProvider::maximumValue( int index )
{
// get the field name
const QgsField &fld = field( index );
QString sql = QString( "SELECT max(%1) FROM %2" )
.arg( connectionRO()->fieldExpression( fld ) )
QString sql = QString( "SELECT %1 FROM %2" )
.arg( connectionRO()->fieldExpression( fld, "max(%1)" ) )
.arg( mQuery );

if ( !mSqlWhereClause.isEmpty() )
Expand Down

0 comments on commit f7b790f

Please sign in to comment.