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

ASF GitHub Bot commented on DRILL-6262:
---------------------------------------

Github user sohami commented on a diff in the pull request:

    https://github.com/apache/drill/pull/1175#discussion_r175629518
  
    --- Diff: 
exec/java-exec/src/main/java/org/apache/drill/exec/record/RecordBatchSizer.java 
---
    @@ -321,10 +321,8 @@ public ColumnSize(ValueVector v, String prefix) {
     
               // Calculate pure data size.
               if (isVariableWidth) {
    -            UInt4Vector offsetVector = ((RepeatedValueVector) 
v).getOffsetVector();
    -            int innerValueCount = 
offsetVector.getAccessor().get(valueCount);
                 VariableWidthVector dataVector = ((VariableWidthVector) 
((RepeatedValueVector) v).getDataVector());
    -            totalDataSize = 
dataVector.getOffsetVector().getAccessor().get(innerValueCount);
    +            totalDataSize = dataVector.getCurrentSizeInBytes();
    --- End diff --
    
    @paul-rogers - I don't think `totalDataSize` includes both offset vector 
side and bytes size. It was meant to only include **pure data size only** for 
all entries in that column and that's what comment also suggests.
    
    Instead `totalNetSize` includes the size for data and offset vector which 
is used for computing the rowWidth.


> IndexOutOfBoundException in RecordBatchSize for empty variableWidthVector
> -------------------------------------------------------------------------
>
>                 Key: DRILL-6262
>                 URL: https://issues.apache.org/jira/browse/DRILL-6262
>             Project: Apache Drill
>          Issue Type: Bug
>          Components: Execution - Flow
>            Reporter: Sorabh Hamirwasia
>            Assignee: Sorabh Hamirwasia
>            Priority: Major
>              Labels: ready-to-commit
>             Fix For: 1.14.0
>
>
> ColumnSize inside RecordBatchSizer while computing the totalDataSize for 
> VariableWidthVector throws IndexOutOfBoundException when the underlying 
> vector is empty without any allocated memory.
> This happens because the way totalDataSize is computed is using the 
> offsetVector value at an index n where n is total number of records in the 
> vector. When vector is empty then n=0 and offsetVector drillbuf is empty as 
> well. So while retrieving value at index 0 from offsetVector exception is 
> thrown. 



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to