org.apache.cassandra.db.filter

## Class RowFilter

- java.lang.Object
- - org.apache.cassandra.db.filter.RowFilter

- All Implemented Interfaces:
    java.lang.Iterable<RowFilter.Expression>

      public abstract class RowFilter
      extends java.lang.Object
      implements java.lang.Iterable<RowFilter.Expression>

  A filter on which rows a given query should include or exclude.

  This corresponds to the restrictions on rows that are not handled by the query `ClusteringIndexFilter`. Some of the expressions of this filter may be handled by a 2ndary index, and the rest is simply filtered out from the result set (the later can only happen if the query was using ALLOW FILTERING).

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `static class` | `RowFilter.CustomExpression` A custom index expression for use with 2i implementations which support custom syntax and which are not necessarily linked to a single column in the base table.
    `static class` | `RowFilter.Expression`
    `static class` | `RowFilter.Serializer`
    `static class` | `RowFilter.SimpleExpression` An expression of the form 'column' 'op' 'value'.
    `static class` | `RowFilter.UserExpression` A user defined filtering expression.

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected java.util.List<RowFilter.Expression>` | `expressions`
    `static RowFilter` | `NONE`
    `static RowFilter.Serializer` | `serializer`

  - ### Constructor Summary

    Constructors
    Modifier | Constructor and Description
    --- | ---
    `protected` | `RowFilter(java.util.List<RowFilter.Expression> expressions)`

  - ### Method Summary

    All Methods Static Methods Instance Methods Abstract Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `RowFilter.SimpleExpression` | `add(ColumnDefinition def, Operator op, java.nio.ByteBuffer value)`
    `void` | `addCustomIndexExpression(CFMetaData cfm, IndexMetadata targetIndex, java.nio.ByteBuffer value)`
    `void` | `addMapEquality(ColumnDefinition def, java.nio.ByteBuffer key, Operator op, java.nio.ByteBuffer value)`
    `void` | `addThriftExpression(CFMetaData metadata, java.nio.ByteBuffer name, Operator op, java.nio.ByteBuffer value)`
    `void` | `addUserExpression(RowFilter.UserExpression e)`
    `boolean` | `clusteringKeyRestrictionsAreSatisfiedBy(Clustering clustering)` Returns true if all of the expressions within this filter that apply to the clustering key are satisfied by the given Clustering, false otherwise.
    `static RowFilter` | `create()`
    `static RowFilter` | `create(int capacity)`
    `abstract UnfilteredPartitionIterator` | `filter(UnfilteredPartitionIterator iter, int nowInSec)` Filters the provided iterator so that only the row satisfying the expression of this filter are included in the resulting iterator.
    `static RowFilter` | `forThrift(int capacity)`
    `java.util.List<RowFilter.Expression>` | `getExpressions()`
    `boolean` | `hasExpressionOnClusteringOrRegularColumns()` Checks if some of the expressions apply to clustering or regular columns.
    `boolean` | `isEmpty()`
    `boolean` | `isSatisfiedBy(CFMetaData metadata, DecoratedKey partitionKey, Row row, int nowInSec)` Whether the provided row in the provided partition satisfies this filter.
    `java.util.Iterator<RowFilter.Expression>` | `iterator()`
    `boolean` | `partitionKeyRestrictionsAreSatisfiedBy(DecoratedKey key, AbstractType<?> keyValidator)` Returns true if all of the expressions within this filter that apply to the partition key are satisfied by the given key, false otherwise.
    `java.lang.String` | `toString()`
    `protected abstract RowFilter` | `withNewExpressions(java.util.List<RowFilter.Expression> expressions)`
    `RowFilter` | `without(RowFilter.Expression expression)` Returns this filter but without the provided expression.
    `RowFilter` | `withoutExpressions()`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

    - ### Methods inherited from interface java.lang.Iterable

      `forEach, spliterator`

- - ### Field Detail

    - #### serializer

          public static final RowFilter.Serializer serializer

    - #### NONE

          public static final RowFilter NONE

    - #### expressions

          protected final java.util.List<RowFilter.Expression> expressions

  - ### Constructor Detail

    - #### RowFilter

          protected RowFilter(java.util.List<RowFilter.Expression> expressions)

  - ### Method Detail

    - #### create

          public static RowFilter create()

    - #### create

          public static RowFilter create(int capacity)

    - #### forThrift

          public static RowFilter forThrift(int capacity)

    - #### add

          public RowFilter.SimpleExpression add(ColumnDefinition def,
                                                Operator op,
                                                java.nio.ByteBuffer value)

    - #### addMapEquality

          public void addMapEquality(ColumnDefinition def,
                                     java.nio.ByteBuffer key,
                                     Operator op,
                                     java.nio.ByteBuffer value)

    - #### addThriftExpression

          public void addThriftExpression(CFMetaData metadata,
                                          java.nio.ByteBuffer name,
                                          Operator op,
                                          java.nio.ByteBuffer value)

    - #### addCustomIndexExpression

          public void addCustomIndexExpression(CFMetaData cfm,
                                               IndexMetadata targetIndex,
                                               java.nio.ByteBuffer value)

    - #### addUserExpression

          public void addUserExpression(RowFilter.UserExpression e)

    - #### getExpressions

          public java.util.List<RowFilter.Expression> getExpressions()

    - #### hasExpressionOnClusteringOrRegularColumns

          public boolean hasExpressionOnClusteringOrRegularColumns()

      Checks if some of the expressions apply to clustering or regular columns.
      Returns:
        `true` if some of the expressions apply to clustering or regular columns, `false` otherwise.

    - #### filter

          public abstract UnfilteredPartitionIterator filter(UnfilteredPartitionIterator iter,
                                                             int nowInSec)

      Filters the provided iterator so that only the row satisfying the expression of this filter are included in the resulting iterator.
      Parameters:
        `iter` - the iterator to filter
        `nowInSec` - the time of query in seconds.
      Returns:
        the filtered iterator.

    - #### isSatisfiedBy

          public boolean isSatisfiedBy(CFMetaData metadata,
                                       DecoratedKey partitionKey,
                                       Row row,
                                       int nowInSec)

      Whether the provided row in the provided partition satisfies this filter.
      Parameters:
        `metadata` - the table metadata.
        `partitionKey` - the partition key for partition to test.
        `row` - the row to test.
        `nowInSec` - the current time in seconds (to know what is live and what isn't).
      Returns:
        `true` if `row` in partition `partitionKey` satisfies this row filter.

    - #### partitionKeyRestrictionsAreSatisfiedBy

          public boolean partitionKeyRestrictionsAreSatisfiedBy(DecoratedKey key,
                                                                AbstractType<?> keyValidator)

      Returns true if all of the expressions within this filter that apply to the partition key are satisfied by the given key, false otherwise.

    - #### clusteringKeyRestrictionsAreSatisfiedBy

          public boolean clusteringKeyRestrictionsAreSatisfiedBy(Clustering clustering)

      Returns true if all of the expressions within this filter that apply to the clustering key are satisfied by the given Clustering, false otherwise.

    - #### without

          public RowFilter without(RowFilter.Expression expression)

      Returns this filter but without the provided expression. This method *assumes* that the filter contains the provided expression.

    - #### withoutExpressions

          public RowFilter withoutExpressions()

    - #### withNewExpressions

          protected abstract RowFilter withNewExpressions(java.util.List<RowFilter.Expression> expressions)

    - #### isEmpty

          public boolean isEmpty()

    - #### iterator

          public java.util.Iterator<RowFilter.Expression> iterator()

      Specified by:
        `iterator` in interface `java.lang.Iterable<RowFilter.Expression>`

    - #### toString

          public java.lang.String toString()

      Overrides:
        `toString` in class `java.lang.Object`

Copyright © 2018 The Apache Software Foundation