You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@drill.apache.org by "Paul Rogers (JIRA)" <ji...@apache.org> on 2017/03/01 22:06:45 UTC

[jira] [Created] (DRILL-5308) Asking an sv2 for its buffer clears the sv2

Paul Rogers created DRILL-5308:
----------------------------------

             Summary: Asking an sv2 for its buffer clears the sv2
                 Key: DRILL-5308
                 URL: https://issues.apache.org/jira/browse/DRILL-5308
             Project: Apache Drill
          Issue Type: Bug
    Affects Versions: 1.9.0
            Reporter: Paul Rogers


Consider the following code:

{code}
      SelectionVector2 sv2 = va.getSelectionVector2();
      sv2Size = sv2.getBuffer().capacity();
{code}

When similar code is called for a value vector, we simply get the buffer capacity. When called for an sv2, we get the capacity *after* clearing the sv2! The code in question:

{code}
  public DrillBuf getBuffer() {
    return getBuffer(true);
  }

  public DrillBuf getBuffer(boolean clear) {
    DrillBuf bufferHandle = this.buffer;

    if (clear) {
      /* Increment the ref count for this buffer */
      bufferHandle.retain(1);

      /* We are passing ownership of the buffer to the
       * caller. clear the buffer from within our selection vector
       */
      clear();
    }

    return bufferHandle;
  }
{code}

That is, for a value vector, {{getBuffer()}} simply gets the buffer. For an sv2, {{getBuffer()}} clears the buffer, then returns it.




--
This message was sent by Atlassian JIRA
(v6.3.15#6346)