Skip to content
  • Todd Lipcon's avatar
    0ba6cb8d
    Add core algorithms for columnar serialization · 0ba6cb8d
    Todd Lipcon authored
    This adds the core of the columnar serialization code paths. Even though
    we internally scan in a columnar fashion in the tablet server, sending
    those columns across the wire isn't straightforward. We have two bits of
    necessary processing:
    
    1) the selection vector needs to be taken into account so we only send
    back selected rows. This means we need to copy out the selected cells
    and also copy out the selected bits from the null bitmap where relevant.
    Doing the null bitmap portion efficiently with wide platform support
    makes up a lot of this patch.
    
    2) for the case of null values, we want to make sure we don't send
    uninitialized memory (which might include secrets!) to the client. So we
    need to zero out any cells where the corresponding non-null bitmap bit
    is unset.
    
    To keep the review manageable, this just adds some unit tests and all
    the new code is initially "dead". Later commits will add the parts that
    construct the full block of columns to be sent on the wire, hook this
    into the tserver, etc.
    
    Change-Id: I16f2993081aac54609aab4d8219ef0bf6c7708c2
    Reviewed-on: http://gerrit.cloudera.org:8080/15556
    
    
    Tested-by: Kudu Jenkins
    Reviewed-by: default avatarAndrew Wong <awong@cloudera.com>
    Reviewed-by: default avatarAlexey Serbin <aserbin@cloudera.com>
    0ba6cb8d
    Add core algorithms for columnar serialization
    Todd Lipcon authored
    This adds the core of the columnar serialization code paths. Even though
    we internally scan in a columnar fashion in the tablet server, sending
    those columns across the wire isn't straightforward. We have two bits of
    necessary processing:
    
    1) the selection vector needs to be taken into account so we only send
    back selected rows. This means we need to copy out the selected cells
    and also copy out the selected bits from the null bitmap where relevant.
    Doing the null bitmap portion efficiently with wide platform support
    makes up a lot of this patch.
    
    2) for the case of null values, we want to make sure we don't send
    uninitialized memory (which might include secrets!) to the client. So we
    need to zero out any cells where the corresponding non-null bitmap bit
    is unset.
    
    To keep the review manageable, this just adds some unit tests and all
    the new code is initially "dead". Later commits will add the parts that
    construct the full block of columns to be sent on the wire, hook this
    into the tserver, etc.
    
    Change-Id: I16f2993081aac54609aab4d8219ef0bf6c7708c2
    Reviewed-on: http://gerrit.cloudera.org:8080/15556
    
    
    Tested-by: Kudu Jenkins
    Reviewed-by: default avatarAndrew Wong <awong@cloudera.com>
    Reviewed-by: default avatarAlexey Serbin <aserbin@cloudera.com>
This project is licensed under the Apache License 2.0. Learn more
Loading