-
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: Andrew Wong <awong@cloudera.com> Reviewed-by: Alexey Serbin <aserbin@cloudera.com>
0ba6cb8dTodd Lipcon authoredThis 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: Andrew Wong <awong@cloudera.com> Reviewed-by: Alexey Serbin <aserbin@cloudera.com>
This project is licensed under the Apache License 2.0.
Learn more
Loading