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

Matthew Hayes commented on DATAFU-114:
--------------------------------------

Sorry for the late response.  The change looks reasonable to me.  There should 
be a test for this though (understandable there isn't one since you couldn't 
build it).  I went ahead and wrote one below.  If this test looks reasonable to 
you I'll commit both pieces of code.  I'm taking a look at DATAFU-95.  

{code}
  @Test
  public void firstTupleFromBagAccumulateTest() throws Exception
  {
    TupleFactory tf = TupleFactory.getInstance();
    BagFactory bf = BagFactory.getInstance();
 
    FirstTupleFromBag op = new FirstTupleFromBag();
    
    Tuple defaultValue = tf.newTuple(1000);
    
op.accumulate(tf.newTuple(Arrays.asList(bf.newDefaultBag(Arrays.asList(tf.newTuple(4))),
 defaultValue)));
    
op.accumulate(tf.newTuple(Arrays.asList(bf.newDefaultBag(Arrays.asList(tf.newTuple(9))),
 defaultValue)));
    
op.accumulate(tf.newTuple(Arrays.asList(bf.newDefaultBag(Arrays.asList(tf.newTuple(16))),
 defaultValue)));
    assertEquals(op.getValue(), tf.newTuple(4));
    op.cleanup();
    
    
op.accumulate(tf.newTuple(Arrays.asList(bf.newDefaultBag(Arrays.asList(tf.newTuple(11))),
 defaultValue)));
    
op.accumulate(tf.newTuple(Arrays.asList(bf.newDefaultBag(Arrays.asList(tf.newTuple(17))),
 defaultValue)));
    
op.accumulate(tf.newTuple(Arrays.asList(bf.newDefaultBag(Arrays.asList(tf.newTuple(5))),
 defaultValue)));
    assertEquals(op.getValue(), tf.newTuple(11));
    op.cleanup();
    
    op.accumulate(tf.newTuple(Arrays.asList(bf.newDefaultBag(), defaultValue)));
    assertEquals(op.getValue(), defaultValue);
    op.cleanup();
  }
{code}

> Make FirstTupleFromBag implement Accumulator
> --------------------------------------------
>
>                 Key: DATAFU-114
>                 URL: https://issues.apache.org/jira/browse/DATAFU-114
>             Project: DataFu
>          Issue Type: Improvement
>    Affects Versions: 1.3.0
>         Environment: All
>            Reporter: Eyal Allweil
>            Priority: Minor
>              Labels: easyfix, newbie, performance
>         Attachments: FirstTupleFromBag.java
>
>
> FirstTupleFromBag only needs the first tuple from the bag, but because it 
> doesn't implement Accumulator the entire bag needs to be passed to it 
> in-memory. The fix is very minor and will make the UDF support large bags.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to