[ https://issues.apache.org/jira/browse/DRILL-5517?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16056843#comment-16056843 ]
ASF GitHub Bot commented on DRILL-5517: --------------------------------------- Github user paul-rogers commented on a diff in the pull request: https://github.com/apache/drill/pull/840#discussion_r123134097 --- Diff: exec/vector/src/main/codegen/templates/VariableLengthVectors.java --- @@ -548,6 +567,23 @@ public void setSafe(int index, ByteBuffer bytes, int start, int length) { } } + public void setScalar(int index, DrillBuf bytes, int start, int length) throws VectorOverflowException { + assert index >= 0; + + if (index >= MAX_ROW_COUNT) { + throw new VectorOverflowException(); + } + int currentOffset = offsetVector.getAccessor().get(index); + final int newSize = currentOffset + length; + if (newSize > MAX_BUFFER_SIZE) { + throw new VectorOverflowException(); + } + while (! data.setBytesBounded(currentOffset, bytes, start, length)) { --- End diff -- Sorry, where? Looks OK to me... > Provide size-aware set operations in value vectors > -------------------------------------------------- > > Key: DRILL-5517 > URL: https://issues.apache.org/jira/browse/DRILL-5517 > Project: Apache Drill > Issue Type: Improvement > Affects Versions: 1.11.0 > Reporter: Paul Rogers > Assignee: Paul Rogers > Fix For: 1.11.0 > > > DRILL-5211 describes a memory fragmentation issue in Drill. The resolution is > to limit vector sizes to 16 MB (the size of Netty memory allocation "slabs.") > Effort starts by providing "size-aware" set operations in value vectors which: > * Operate as {{setSafe()}} while vectors are below 16 MB. > * Throw a new, specific exception ({{VectorOverflowException}}) if setting > the value (and growing the vector) would exceed the vector limit. > The methods in value vectors then become the foundation on which we can > construct size-aware record batch "writers." -- This message was sent by Atlassian JIRA (v6.4.14#64029)