[
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)