accumulo-notifications mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Keith Turner (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (ACCUMULO-2501) Add deepCopy to RowFilter
Date Fri, 21 Mar 2014 03:03:43 GMT

    [ https://issues.apache.org/jira/browse/ACCUMULO-2501?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13942715#comment-13942715
] 

Keith Turner commented on ACCUMULO-2501:
----------------------------------------

[~rweeks] would you like to be added to the Accumulo contributors page?  If so let me know
what info you would like to post there.

The unit test does not appear to exercise deep copy.  Also with the chained iterator case
it would be nice if the filters did not always accept.  Maybe do something like have one level
accept rows (r1,r2) and have another level accepts rows (r2, r3) and the only output should
be r2.

> Add deepCopy to RowFilter
> -------------------------
>
>                 Key: ACCUMULO-2501
>                 URL: https://issues.apache.org/jira/browse/ACCUMULO-2501
>             Project: Accumulo
>          Issue Type: Improvement
>    Affects Versions: 1.5.1
>            Reporter: Russ Weeks
>            Priority: Minor
>              Labels: filter, iterators
>             Fix For: 1.5.2
>
>         Attachments: ACCUMULO-2501.patch
>
>
> It would be nice for subclasses of RowFilter to be chainable, for this they need to provide
an implementation of deepCopy. Adding a base implementation in RowFilter would make things
easier.
> Here's a patch (taken from git commit 23980d3)... please let me know if I'm missing something,
maybe there's more to it than I can see?
> {code}
> diff --git a/core/src/main/java/org/apache/accumulo/core/iterators/user/RowFilter.java
b/core/src/main/java/org/apache/accumulo/core/iterators/user/RowFilter.java
> index a232796..ad1e4a0 100644
> --- a/core/src/main/java/org/apache/accumulo/core/iterators/user/RowFilter.java
> +++ b/core/src/main/java/org/apache/accumulo/core/iterators/user/RowFilter.java
> @@ -139,7 +139,20 @@ public abstract class RowFilter extends WrappingIterator {
>      super.init(source, options, env);
>      this.decisionIterator = new RowIterator(source.deepCopy(env));
>    }
> -  
> +
> +  @Override
> +  public SortedKeyValueIterator<Key,Value> deepCopy(IteratorEnvironment env) {
> +      RowFilter newInstance;
> +      try {
> +          newInstance = getClass().newInstance();
> +      } catch (Exception e) {
> +          throw new RuntimeException(e);
> +      }
> +      newInstance.setSource(getSource().deepCopy(env));
> +      newInstance.decisionIterator = new RowIterator(getSource().deepCopy(env));
> +      return newInstance;
> +  }
> +
>    @Override
>    public boolean hasTop() {
>      return hasTop && super.hasTop();
> {code}



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Mime
View raw message