26  if ( pkAttributes.isEmpty() )
 
   28    return QString::number( feature.
id() );
 
   32  for ( 
const auto &attrIdx : std::as_const( pkAttributes ) )
 
   34    pkValues.append( feature.
attribute( attrIdx ).toString() );
 
 
   43  if ( pkAttributes.isEmpty() )
 
   46    for ( 
const QString &serverFid : serverFids )
 
   51    return featureRequest;
 
   55  for ( 
const QString &serverFid : serverFids )
 
   60  if ( expList.count() == 1 )
 
   66    QString fullExpression;
 
   67    for ( 
const QString &exp : std::as_const( expList ) )
 
   69      if ( !fullExpression.isEmpty() )
 
   71        fullExpression.append( QStringLiteral( 
" OR " ) );
 
   73      fullExpression.append( QStringLiteral( 
"( " ) );
 
   74      fullExpression.append( exp );
 
   75      fullExpression.append( QStringLiteral( 
" )" ) );
 
   80  return featureRequest;
 
 
   87  if ( pkAttributes.isEmpty() )
 
   94  QString expressionString;
 
   95  QStringList pkValues = serverFid.split( 
pkSeparator() );
 
   96  int pkExprSize = std::min( pkAttributes.size(), pkValues.size() );
 
   97  for ( 
int i = 0; i < pkExprSize; ++i )
 
  101      expressionString.append( QStringLiteral( 
" AND " ) );
 
  104    QString fieldName = fields[ pkAttributes.at( i ) ].name();
 
  108  return expressionString;
 
 
  113  return QStringLiteral( 
"@@" );
 
 
static QString createFieldEqualityExpression(const QString &fieldName, const QVariant &value, QMetaType::Type fieldType=QMetaType::Type::UnknownType)
Create an expression allowing to evaluate if a field is equal to a value.
 
This class wraps a request for features to a vector layer (or directly its vector data provider).
 
QgsFeatureRequest & combineFilterExpression(const QString &expression)
Modifies the existing filter expression to add an additional expression filter.
 
QgsFeatureRequest & setFilterFids(const QgsFeatureIds &fids)
Sets the feature IDs that should be fetched.
 
The feature class encapsulates a single feature including its unique ID, geometry and a list of field...
 
Q_INVOKABLE QVariant attribute(const QString &name) const
Lookup attribute value by attribute name.
 
Container of fields for a vector layer.
 
bool append(const QgsField &field, Qgis::FieldOrigin origin=Qgis::FieldOrigin::Provider, int originIndex=-1)
Appends a field.
 
This is the base class for vector data providers.
 
virtual QgsAttributeList pkAttributeIndexes() const
Returns list of indexes of fields that make up the primary key.
 
QgsFields fields() const override=0
Returns the fields associated with this data provider.
 
SERVER_EXPORT QString getExpressionFromServerFid(const QString &serverFid, const QgsVectorDataProvider *provider)
Returns the expression feature id based on primary keys.
 
SERVER_EXPORT QString pkSeparator()
Returns the primary keys separator.
 
SERVER_EXPORT QgsFeatureRequest updateFeatureRequestFromServerFids(QgsFeatureRequest &featureRequest, const QStringList &serverFids, const QgsVectorDataProvider *provider)
Returns the feature request based on feature ids build with primary keys.
 
SERVER_EXPORT QString getServerFid(const QgsFeature &feature, const QgsAttributeList &pkAttributes)
Returns the feature id based on primary keys.
 
QSet< QgsFeatureId > QgsFeatureIds
 
#define STRING_TO_FID(str)
 
QList< int > QgsAttributeList