40    QgsDataProvider::ReadFlags flags )
 
 
   50  return QStringLiteral( 
"Generic vector file" );
 
 
   79  return Qgis::VectorLayerTypeFlags();
 
 
  126  return mErrors.isEmpty() ? QString() : mErrors.last();
 
 
  157  Q_UNUSED( attributes )
 
 
  165  Q_UNUSED( attributes )
 
 
  173  Q_UNUSED( renamedAttributes )
 
 
  197  Q_UNUSED( fieldIndex )
 
 
  206  if ( fieldIndex < 0 || fieldIndex >= f.count() )
 
  207    return QgsFieldConstraints::Constraints();
 
  209  return f.at( fieldIndex ).constraints().constraints();
 
 
  223  Q_UNUSED( geometry_map )
 
 
  270    mEncoding = QTextCodec::codecForName( 
"UTF-8" );
 
  274    mEncoding = QTextCodec::codecForName( e.toLocal8Bit().constData() );
 
  276  if ( !mEncoding && e != QLatin1String( 
"System" ) )
 
  291        mEncoding = QTextCodec::codecForName( 
"System" );
 
  297    mEncoding = QTextCodec::codecForLocale();
 
  299  Q_ASSERT( mEncoding );
 
 
  308    return mEncoding->name();
 
 
  318  QStringList abilitiesList;
 
  324    abilitiesList += tr( 
"Add Features" );
 
  329    abilitiesList += tr( 
"Delete Features" );
 
  334    abilitiesList += tr( 
"Change Attribute Values" );
 
  339    abilitiesList += tr( 
"Add Attributes" );
 
  344    abilitiesList += tr( 
"Delete Attributes" );
 
  349    abilitiesList += tr( 
"Rename Attributes" );
 
  355    abilitiesList += tr( 
"Create Spatial Index" );
 
  360    abilitiesList += tr( 
"Create Attribute Indexes" );
 
  365    abilitiesList += tr( 
"Fast Access to Features at ID" );
 
  370    abilitiesList += tr( 
"Change Geometries" );
 
  375    abilitiesList += tr( 
"Presimplify Geometries" );
 
  380    abilitiesList += tr( 
"Presimplify Geometries with Validity Check" );
 
  385    abilitiesList += tr( 
"Simultaneous Geometry and Attribute Updates" );
 
  390    abilitiesList += tr( 
"Transactions" );
 
  395    abilitiesList += tr( 
"Curved Geometries" );
 
  400    abilitiesList += tr( 
"Feature Symbology" );
 
  403  return abilitiesList.join( QLatin1String( 
", " ) );
 
 
  408  return Qgis::VectorDataProviderAttributeEditCapabilities();
 
 
  422  QMap<QString, int> resultMap;
 
  425  for ( 
int i = 0; i < fieldsCopy.
count(); ++i )
 
  427    resultMap.insert( fieldsCopy.
at( i ).
name(), i );
 
 
  465  QgsDebugMsgLevel( QStringLiteral( 
"field name = %1 type = %2 length = %3 precision = %4" )
 
  467                          QVariant::typeToName( field.
type() ) )
 
  471  for ( 
const NativeType &nativeType : mNativeTypes )
 
  473    QgsDebugMsgLevel( QStringLiteral( 
"native field type = %1 min length = %2 max length = %3 min precision = %4 max precision = %5" )
 
  474                      .arg( QVariant::typeToName( nativeType.mType ) )
 
  475                      .arg( nativeType.mMinLen )
 
  476                      .arg( nativeType.mMaxLen )
 
  477                      .arg( nativeType.mMinPrec )
 
  478                      .arg( nativeType.mMaxPrec ), 2 );
 
  480    if ( field.
type() != nativeType.mType )
 
  486      if ( ( nativeType.mMinLen > 0 && field.
length() < nativeType.mMinLen ) ||
 
  487           ( nativeType.mMaxLen > 0 && field.
length() > nativeType.mMaxLen ) )
 
  497      if ( ( nativeType.mMinPrec > 0 && field.
precision() < nativeType.mMinPrec ) ||
 
  498           ( nativeType.mMaxPrec > 0 && field.
precision() > nativeType.mMaxPrec ) )
 
  509  QgsDebugError( QStringLiteral( 
"no sufficient native type found" ) );
 
 
  517  if ( index < 0 || index >= 
fields().count() )
 
  519    QgsDebugError( 
"Warning: access requested to invalid field index: " + QString::number( index ) );
 
  525  if ( !mCacheMinValues.contains( index ) )
 
  528  return mCacheMinValues[index];
 
 
  535  if ( index < 0 || index >= 
fields().count() )
 
  537    QgsDebugError( 
"Warning: access requested to invalid field index: " + QString::number( index ) );
 
  543  if ( !mCacheMaxValues.contains( index ) )
 
  546  return mCacheMaxValues[index];
 
 
  556  if ( index < 0 || index >= 
fields().count() )
 
  561  keys.append( index );
 
  567  request.
setFilterExpression( QStringLiteral( 
"\"%1\" ILIKE '%%2%'" ).arg( fieldName, substring ) );
 
  574    const QString value = f.
attribute( index ).toString();
 
  575    if ( !set.contains( value ) )
 
  577      results.append( value );
 
  581    if ( ( limit >= 0 && results.size() >= limit ) || ( feedback && feedback->
isCanceled() ) )
 
 
  596  Q_UNUSED( parameters )
 
 
  608  mCacheMinMaxDirty = 
true;
 
  609  mCacheMinValues.clear();
 
  610  mCacheMaxValues.clear();
 
 
  617  if ( !mCacheMinMaxDirty )
 
  621  for ( 
int i = 0; i < flds.
count(); ++i )
 
  623    if ( flds.
at( i ).
type() == QVariant::Int )
 
  625      mCacheMinValues[i] = QVariant( std::numeric_limits<int>::max() );
 
  626      mCacheMaxValues[i] = QVariant( std::numeric_limits<int>::lowest() );
 
  628    else if ( flds.
at( i ).
type() == QVariant::LongLong )
 
  630      mCacheMinValues[i] = QVariant( std::numeric_limits<qlonglong>::max() );
 
  631      mCacheMaxValues[i] = QVariant( std::numeric_limits<qlonglong>::lowest() );
 
  633    else if ( flds.
at( i ).
type() == QVariant::Double )
 
  635      mCacheMinValues[i] = QVariant( std::numeric_limits<double>::max() );
 
  636      mCacheMaxValues[i] = QVariant( std::numeric_limits<double>::lowest() );
 
  641      mCacheMinValues[i] = QVariant();
 
  642      mCacheMaxValues[i] = QVariant();
 
  654    for ( 
const int attributeIndex : keys )
 
  656      const QVariant &varValue = attrs.at( attributeIndex );
 
  661      switch ( flds.
at( attributeIndex ).
type() )
 
  665          const int value = varValue.toInt();
 
  666          if ( value < mCacheMinValues[ attributeIndex ].toInt() )
 
  667            mCacheMinValues[ attributeIndex ] = value;
 
  668          if ( value > mCacheMaxValues[ attributeIndex ].toInt() )
 
  669            mCacheMaxValues[ attributeIndex ] = value;
 
  672        case QVariant::LongLong:
 
  674          const qlonglong value = varValue.toLongLong();
 
  675          if ( value < mCacheMinValues[ attributeIndex ].toLongLong() )
 
  676            mCacheMinValues[ attributeIndex ] = value;
 
  677          if ( value > mCacheMaxValues[ attributeIndex ].toLongLong() )
 
  678            mCacheMaxValues[ attributeIndex ] = value;
 
  681        case QVariant::Double:
 
  683          const double value = varValue.toDouble();
 
  684          if ( value < mCacheMinValues[ attributeIndex ].toDouble() )
 
  685            mCacheMinValues[attributeIndex ] = value;
 
  686          if ( value > mCacheMaxValues[ attributeIndex ].toDouble() )
 
  687            mCacheMaxValues[ attributeIndex ] = value;
 
  690        case QVariant::DateTime:
 
  692          const QDateTime value = varValue.toDateTime();
 
  693          if ( value < mCacheMinValues[ attributeIndex ].toDateTime() || !mCacheMinValues[ attributeIndex ].isValid() )
 
  694            mCacheMinValues[attributeIndex ] = value;
 
  695          if ( value > mCacheMaxValues[ attributeIndex ].toDateTime() || !mCacheMaxValues[ attributeIndex ].isValid() )
 
  696            mCacheMaxValues[ attributeIndex ] = value;
 
  701          const QDate value = varValue.toDate();
 
  702          if ( value < mCacheMinValues[ attributeIndex ].toDate() || !mCacheMinValues[ attributeIndex ].isValid() )
 
  703            mCacheMinValues[attributeIndex ] = value;
 
  704          if ( value > mCacheMaxValues[ attributeIndex ].toDate() || !mCacheMaxValues[ attributeIndex ].isValid() )
 
  705            mCacheMaxValues[ attributeIndex ] = value;
 
  710          const QTime value = varValue.toTime();
 
  711          if ( value < mCacheMinValues[ attributeIndex ].toTime() || !mCacheMinValues[ attributeIndex ].isValid() )
 
  712            mCacheMinValues[attributeIndex ] = value;
 
  713          if ( value > mCacheMaxValues[ attributeIndex ].toTime() || !mCacheMaxValues[ attributeIndex ].isValid() )
 
  714            mCacheMaxValues[ attributeIndex ] = value;
 
  719          const QString value = varValue.toString();
 
  720          if ( 
QgsVariantUtils::isNull( mCacheMinValues[ attributeIndex ] ) || value < mCacheMinValues[attributeIndex ].toString() )
 
  722            mCacheMinValues[attributeIndex] = value;
 
  724          if ( 
QgsVariantUtils::isNull( mCacheMaxValues[attributeIndex] ) || value > mCacheMaxValues[attributeIndex].toString() )
 
  726            mCacheMaxValues[attributeIndex] = value;
 
  734  mCacheMinMaxDirty = 
false;
 
 
  741  if ( !v.convert( type ) || value.isNull() )
 
  742    v = QVariant( type );
 
 
  754static bool _compareEncodings( 
const QString &s1, 
const QString &s2 )
 
  756  return s1.toLower() < s2.toLower();
 
  759static bool _removeDuplicateEncodings( 
const QString &s1, 
const QString &s2 )
 
  761  return s1.compare( s2, Qt::CaseInsensitive ) == 0;
 
  766  static std::once_flag initialized;
 
  767  std::call_once( initialized, [ = ]
 
  769    const auto codecs { QTextCodec::availableCodecs() };
 
  770    for ( 
const QByteArray &codec : codecs )
 
  775    smEncodings << 
"BIG5";
 
  776    smEncodings << 
"BIG5-HKSCS";
 
  777    smEncodings << 
"EUCJP";
 
  778    smEncodings << 
"EUCKR";
 
  779    smEncodings << 
"GB2312";
 
  780    smEncodings << 
"GBK";
 
  781    smEncodings << 
"GB18030";
 
  782    smEncodings << 
"JIS7";
 
  783    smEncodings << 
"SHIFT-JIS";
 
  784    smEncodings << 
"TSCII";
 
  785    smEncodings << 
"UTF-8";
 
  786    smEncodings << 
"UTF-16";
 
  787    smEncodings << 
"KOI8-R";
 
  788    smEncodings << 
"KOI8-U";
 
  789    smEncodings << 
"ISO8859-1";
 
  790    smEncodings << 
"ISO8859-2";
 
  791    smEncodings << 
"ISO8859-3";
 
  792    smEncodings << 
"ISO8859-4";
 
  793    smEncodings << 
"ISO8859-5";
 
  794    smEncodings << 
"ISO8859-6";
 
  795    smEncodings << 
"ISO8859-7";
 
  796    smEncodings << 
"ISO8859-8";
 
  797    smEncodings << 
"ISO8859-8-I";
 
  798    smEncodings << 
"ISO8859-9";
 
  799    smEncodings << 
"ISO8859-10";
 
  800    smEncodings << 
"ISO8859-11";
 
  801    smEncodings << 
"ISO8859-12";
 
  802    smEncodings << 
"ISO8859-13";
 
  803    smEncodings << 
"ISO8859-14";
 
  804    smEncodings << 
"ISO8859-15";
 
  805    smEncodings << 
"IBM 850";
 
  806    smEncodings << 
"IBM 866";
 
  807    smEncodings << 
"CP874";
 
  808    smEncodings << 
"CP1250";
 
  809    smEncodings << 
"CP1251";
 
  810    smEncodings << 
"CP1252";
 
  811    smEncodings << 
"CP1253";
 
  812    smEncodings << 
"CP1254";
 
  813    smEncodings << 
"CP1255";
 
  814    smEncodings << 
"CP1256";
 
  815    smEncodings << 
"CP1257";
 
  816    smEncodings << 
"CP1258";
 
  817    smEncodings << 
"Apple Roman";
 
  818    smEncodings << 
"TIS-620";
 
  819    smEncodings << 
"System";
 
  823    std::sort( sEncodings.begin(), sEncodings.end(), _compareEncodings );
 
  824    const auto last = std::unique( sEncodings.begin(), sEncodings.end(), _removeDuplicateEncodings );
 
  825    sEncodings.erase( last, sEncodings.end() );
 
 
  843  return !mErrors.isEmpty();
 
 
  880  return QSet<QgsMapLayerDependency>();
 
 
  915  if ( !convertedGeometry )
 
  922  if ( convertedGeometry->
wkbType() == providerGeometryType )
 
  927  std::unique_ptr< QgsAbstractGeometry > outputGeom;
 
  932    QgsCompoundCurve *compoundCurve = qgsgeometry_cast<QgsCompoundCurve *>( convertedGeometry );
 
  935      if ( compoundCurve->
nCurves() == 1 )
 
  937        const QgsCircularString *circularString = qgsgeometry_cast<const QgsCircularString *>( compoundCurve->
curveAt( 0 ) );
 
  938        if ( circularString )
 
  940          outputGeom.reset( circularString->
clone() );
 
  952      outputGeom.reset( curveGeom );
 
  960    if ( segmentizedGeom )
 
  962      outputGeom.reset( segmentizedGeom );
 
  971    if ( geomCollection )
 
  973      if ( geomCollection->
addGeometry( outputGeom ? outputGeom->clone() : convertedGeometry->
clone() ) )
 
  975        outputGeom.reset( collGeom.release() );
 
  983    const QgsGeometryCollection *collection = qgsgeometry_cast<const QgsGeometryCollection *>( convertedGeometry );
 
  989        if ( firstGeom && firstGeom->
wkbType() == providerGeometryType )
 
  991          outputGeom.reset( firstGeom->
clone() );
 
 1002      outputGeom.reset( convertedGeometry->
clone() );
 
 1011      outputGeom.reset( convertedGeometry->
clone() );
 
 1013    outputGeom->addMValue();
 
 
 1031QStringList QgsVectorDataProvider::sEncodings;
 
 1037  return QList<QgsRelation>();
 
 
 1050  return mTemporalCapabilities.get();
 
 
 1057  return mTemporalCapabilities.get();
 
 
@ SqlQuery
SQL query layer.
 
WkbType
The WKB type describes the number of dimensions a geometry has.
 
@ CircularString
CircularString.
 
Abstract base class for all geometries.
 
virtual bool addZValue(double zValue=0)=0
Adds a z-dimension to the geometry, initialized to a preset value.
 
virtual QgsAbstractGeometry * segmentize(double tolerance=M_PI/180., SegmentationToleranceType toleranceType=MaximumAngle) const
Returns a version of the geometry without curves.
 
virtual QgsAbstractGeometry * toCurveType() const =0
Returns the geometry converted to the more generic curve type.
 
Qgis::WkbType wkbType() const
Returns the WKB type of the geometry.
 
virtual QgsAbstractGeometry * clone() const =0
Clones the geometry by performing a deep copy.
 
Abstract base class - its implementations define different approaches to the labeling of a vector lay...
 
Aggregate
Available aggregates to calculate.
 
Circular string geometry type.
 
QgsCircularString * clone() const override
Clones the geometry by performing a deep copy.
 
Compound curve geometry type.
 
int nCurves() const
Returns the number of curves in the geometry.
 
const QgsCurve * curveAt(int i) const
Returns the curve at the specified index.
 
This class represents a coordinate reference system (CRS).
 
Abstract base class for spatial data provider implementations.
 
virtual Qgis::DataProviderFlags flags() const
Returns the generic data provider flags.
 
virtual QgsCoordinateReferenceSystem crs() const =0
Returns the coordinate system for the data source.
 
virtual QgsRectangle extent() const =0
Returns the extent of the layer.
 
Expression contexts are used to encapsulate the parameters around which a QgsExpression should be eva...
 
Wrapper for iterator of features from vector data provider or vector layer.
 
bool nextFeature(QgsFeature &f)
 
This class wraps a request for features to a vector layer (or directly its vector data provider).
 
QgsFeatureRequest & setLimit(long long limit)
Set the maximum number of features to request.
 
QgsFeatureRequest & setFlags(QgsFeatureRequest::Flags flags)
Sets flags that affect how features will be fetched.
 
QgsFeatureRequest & setSubsetOfAttributes(const QgsAttributeList &attrs)
Set a subset of attributes that will be fetched.
 
QgsFeatureRequest & setFilterExpression(const QString &expression)
Set the filter expression.
 
@ NoGeometry
Geometry is not required. It may still be returned if e.g. required for a filter condition.
 
QgsFeatureRequest & setNoAttributes()
Set that no attributes will be fetched.
 
FeatureAvailability
Possible return value for hasFeatures() to determine if a source is empty.
 
@ NoFeaturesAvailable
There are certainly no features available in this source.
 
@ FeaturesAvailable
There is at least one feature available in this source.
 
The feature class encapsulates a single feature including its unique ID, geometry and a list of field...
 
QVariant attribute(const QString &name) const
Lookup attribute value by attribute name.
 
Base class for feedback objects to be used for cancellation of something running in a worker thread.
 
bool isCanceled() const
Tells whether the operation has been canceled already.
 
Constraint
Constraints which may be present on a field.
 
Encapsulate a field in an attribute table or data source.
 
Container of fields for a vector layer.
 
QgsAttributeList allAttributesList() const
Utility function to get list of attribute indexes.
 
int count() const
Returns number of items.
 
QgsField at(int i) const
Returns the field at particular index (must be in range 0..N-1).
 
int lookupField(const QString &fieldName) const
Looks up field's index from the field name.
 
virtual bool addGeometry(QgsAbstractGeometry *g)
Adds a geometry and takes ownership. Returns true in case of success.
 
int numGeometries() const
Returns the number of geometries within the collection.
 
const QgsAbstractGeometry * geometryN(int n) const
Returns a const reference to a geometry from within the collection.
 
static std::unique_ptr< QgsAbstractGeometry > geomFromWkbType(Qgis::WkbType t)
Returns empty geometry from wkb type.
 
A geometry is the spatial representation of a feature.
 
const QgsAbstractGeometry * constGet() const
Returns a non-modifiable (const) reference to the underlying abstract geometry primitive.
 
static void logMessage(const QString &message, const QString &tag=QString(), Qgis::MessageLevel level=Qgis::MessageLevel::Warning, bool notifyUser=true)
Adds a message to the log instance (and creates it if necessary).
 
A QTextCodec implementation which relies on OGR to do the text conversion.
 
static QStringList supportedCodecs()
Returns a list of supported text codecs.
 
A rectangle specified with double values.
 
This class allows including a set of layers in a database-side transaction, provided the layer data p...
 
static bool isNull(const QVariant &variant)
Returns true if the specified variant should be considered a NULL value.
 
Implementation of data provider temporal properties for QgsVectorDataProviders.
 
This is the base class for vector data providers.
 
void pushError(const QString &msg) const
Push a notification about errors that happened in this providers scope.
 
QgsRectangle sourceExtent() const override
Returns the extent of all geometries from the source.
 
virtual bool cancelReload()
Cancels the current reloading of data.
 
QString lastError() const override
Returns the most recent error encountered by the sink, e.g.
 
void setNativeTypes(const QList< QgsVectorDataProvider::NativeType > &nativeTypes)
Set the list of native types supported by this provider.
 
virtual QList< QgsRelation > discoverRelations(const QgsVectorLayer *target, const QList< QgsVectorLayer * > &layers) const
Discover the available relations with the given layers.
 
static QStringList availableEncodings()
Returns a list of available encodings.
 
virtual QString dataComment() const override
Returns a short comment for the data that this provider is providing access to (e....
 
@ SimplifyGeometries
Supports simplification of geometries on provider side according to a distance tolerance.
 
@ SimplifyGeometriesWithTopologicalValidation
Supports topological simplification of geometries on provider side according to a distance tolerance.
 
@ CircularGeometries
Supports circular geometry types (circularstring, compoundcurve, curvepolygon)
 
@ SelectAtId
Fast access to features using their ID.
 
@ ChangeFeatures
Supports joint updates for attributes and geometry. Providers supporting this should still define Cha...
 
@ ChangeGeometries
Allows modifications of geometries.
 
@ DeleteAttributes
Allows deletion of attributes (fields)
 
@ DeleteFeatures
Allows deletion of features.
 
@ CreateAttributeIndex
Can create indexes on provider's fields.
 
@ TransactionSupport
Supports transactions.
 
@ NoCapabilities
Provider has no capabilities.
 
@ AddAttributes
Allows addition of new attributes (fields)
 
@ CreateSpatialIndex
Allows creation of spatial index.
 
@ FeatureSymbology
Provider is able retrieve embedded symbology associated with individual features. Since QGIS 3....
 
@ RenameAttributes
Supports renaming attributes (fields). Since QGIS 2.16.
 
@ ChangeAttributeValues
Allows modification of attribute values.
 
@ AddFeatures
Allows adding features.
 
bool supportedType(const QgsField &field) const
check if provider supports type of field
 
virtual bool changeGeometryValues(const QgsGeometryMap &geometry_map)
Changes geometries of existing features.
 
virtual bool createSpatialIndex()
Creates a spatial index on the datasource (if supported by the provider type).
 
Q_DECL_DEPRECATED QgsAttrPalIndexNameHash palAttributeIndexNames() const
Returns list of indexes to names for QgsPalLabeling fix.
 
QgsCoordinateReferenceSystem sourceCrs() const override
Returns the coordinate reference system for features in the source.
 
virtual QgsFeatureRenderer * createRenderer(const QVariantMap &configuration=QVariantMap()) const
Creates a new vector layer feature renderer, using provider backend specific information.
 
virtual QString storageType() const
Returns the permanent storage type for this layer as a friendly name.
 
void clearMinMaxCache()
Invalidates the min/max cache.
 
virtual bool truncate()
Removes all features from the layer.
 
virtual QStringList uniqueStringsMatching(int index, const QString &substring, int limit=-1, QgsFeedback *feedback=nullptr) const
Returns unique string values of an attribute which contain a specified subset string.
 
void raiseError(const QString &msg) const
Signals an error in this provider.
 
QTextCodec * textEncoding() const
Gets this providers encoding.
 
virtual bool isSqlQuery() const
Returns true if the layer is a query (SQL) layer.
 
void clearErrors()
Clear recorded errors.
 
QStringList errors() const
Gets recorded errors.
 
virtual bool empty() const
Returns true if the layer does not contain any feature.
 
QgsVectorDataProvider(const QString &uri=QString(), const QgsDataProvider::ProviderOptions &providerOptions=QgsDataProvider::ProviderOptions(), QgsDataProvider::ReadFlags flags=QgsDataProvider::ReadFlags())
Constructor for a vector data provider.
 
QList< QgsVectorDataProvider::NativeType > nativeTypes() const
Returns the names of the supported types.
 
virtual QgsAttributeList pkAttributeIndexes() const
Returns list of indexes of fields that make up the primary key.
 
virtual void handlePostCloneOperations(QgsVectorDataProvider *source)
Handles any post-clone operations required after this vector data provider was cloned from the source...
 
QgsGeometry convertToProviderType(const QgsGeometry &geom) const
Converts the geometry to the provider type if possible / necessary.
 
virtual bool changeFeatures(const QgsChangedAttributesMap &attr_map, const QgsGeometryMap &geometry_map)
Changes attribute values and geometries of existing features.
 
virtual QSet< QgsMapLayerDependency > dependencies() const
Gets the list of layer ids on which this layer depends.
 
int fieldNameIndex(const QString &fieldName) const
Returns the index of a field name or -1 if the field does not exist.
 
virtual QString defaultValueClause(int fieldIndex) const
Returns any default value clauses which are present at the provider for a specified field index.
 
virtual void setEncoding(const QString &e)
Set encoding used for accessing data from layer.
 
virtual bool changeAttributeValues(const QgsChangedAttributesMap &attr_map)
Changes attribute values of existing features.
 
QgsFeatureSource::FeatureAvailability hasFeatures() const override
Will always return FeatureAvailability::FeaturesAvailable or FeatureAvailability::NoFeaturesAvailable...
 
virtual bool deleteFeatures(const QgsFeatureIds &id)
Deletes one or more features from the provider.
 
virtual Qgis::VectorLayerTypeFlags vectorLayerTypeFlags() const
Returns the vector layer type flags.
 
QVariant maximumValue(int index) const override
Returns the maximum value of an attribute.
 
virtual bool createAttributeIndex(int field)
Create an attribute index on the datasource.
 
bool addFeatures(QgsFeatureList &flist, QgsFeatureSink::Flags flags=QgsFeatureSink::Flags()) override
Adds a list of features to the sink.
 
QgsFields fields() const override=0
Returns the fields associated with this data provider.
 
QMap< QString, int > fieldNameMap() const
Returns a map where the key is the name of the field and the value is its index.
 
Qgis::WkbType wkbType() const override=0
Returns the geometry type which is returned by this layer.
 
QgsFeatureIterator getFeatures(const QgsFeatureRequest &request=QgsFeatureRequest()) const override=0
Query the provider for features specified in request.
 
virtual QgsAttributeList attributeIndexes() const
Returns list of indexes to fetch all attributes in nextFeature()
 
virtual bool addAttributes(const QList< QgsField > &attributes)
Adds new attributes to the provider.
 
QVariant minimumValue(int index) const override
Returns the minimum value of an attribute.
 
virtual QVariant aggregate(QgsAggregateCalculator::Aggregate aggregate, int index, const QgsAggregateCalculator::AggregateParameters ¶meters, QgsExpressionContext *context, bool &ok, QgsFeatureIds *fids=nullptr) const
Calculates an aggregated value from the layer's features.
 
void fillMinMaxCache() const
Populates the cache of minimum and maximum attribute values.
 
QString encoding() const
Returns the encoding which is used for accessing data.
 
virtual QVariant defaultValue(int fieldIndex) const
Returns any literal default values which are present at the provider for a specified field index.
 
QgsFieldConstraints::Constraints fieldConstraints(int fieldIndex) const
Returns any constraints which are present at the provider for a specified field index.
 
virtual QgsTransaction * transaction() const
Returns the transaction this data provider is included in, if any.
 
virtual QgsAbstractVectorLayerLabeling * createLabeling(const QVariantMap &configuration=QVariantMap()) const
Creates labeling settings, using provider backend specific information.
 
virtual Q_INVOKABLE QgsVectorDataProvider::Capabilities capabilities() const
Returns flags containing the supported capabilities.
 
virtual bool renameAttributes(const QgsFieldNameMap &renamedAttributes)
Renames existing attributes.
 
virtual bool deleteAttributes(const QgsAttributeIds &attributes)
Deletes existing attributes from the provider.
 
virtual bool skipConstraintCheck(int fieldIndex, QgsFieldConstraints::Constraint constraint, const QVariant &value=QVariant()) const
Returns true if a constraint check should be skipped for a specified field (e.g., if the value return...
 
virtual Qgis::VectorDataProviderAttributeEditCapabilities attributeEditCapabilities() const
Returns the provider's supported attribute editing capabilities.
 
static QVariant convertValue(QVariant::Type type, const QString &value)
 
bool hasErrors() const
Provider has errors to report.
 
QgsVectorDataProviderTemporalCapabilities * temporalCapabilities() override
Returns the provider's temporal capabilities.
 
QString capabilitiesString() const
Returns the above in friendly format.
 
Represents a vector layer which manages a vector based data sets.
 
static bool isMultiType(Qgis::WkbType type)
Returns true if the WKB type is a multi type.
 
static bool hasZ(Qgis::WkbType type)
Tests whether a WKB type contains the z-dimension.
 
static bool hasM(Qgis::WkbType type)
Tests whether a WKB type contains m values.
 
static bool isCurvedType(Qgis::WkbType type)
Returns true if the WKB type is a curved type or can contain curved geometries.
 
static Qgis::WkbType flatType(Qgis::WkbType type)
Returns the flat type for a WKB type.
 
QMap< int, QString > QgsFieldNameMap
 
QMap< QgsFeatureId, QgsGeometry > QgsGeometryMap
 
QMap< QgsFeatureId, QgsAttributeMap > QgsChangedAttributesMap
 
QList< QgsFeature > QgsFeatureList
 
QSet< QgsFeatureId > QgsFeatureIds
 
#define QgsDebugMsgLevel(str, level)
 
#define QgsDebugError(str)
 
#define QGIS_PROTECT_QOBJECT_THREAD_ACCESS_NON_FATAL
 
#define QGIS_PROTECT_QOBJECT_THREAD_ACCESS
 
QList< int > QgsAttributeList
 
QSet< int > QgsAttributeIds
 
QHash< int, QString > QgsAttrPalIndexNameHash
 
A bundle of parameters controlling aggregate calculation.
 
Setting options for creating vector data providers.