I have taken your optimization suggestions, if there is only one value, offset will be negative, and its position is the inverse of the negative value, this situation does not require serialization of roaringBitmap.
> 2024年6月28日 下午12:50,Jingsong Li <jingsongl...@gmail.com> 写道: > > if there is one value, what is size of the roaringbitmap? > > guanshi <1649067...@qq.com.invalid>于2024年6月28日 周五11:25写道: > >> Sorry, I forgot about the situation where there is only one null value, >> your design does not need to be changed. >> >>> 2024年6月28日 上午10:53,guanshi <1649067...@qq.com> 写道: >>> >>> Null value offset is not necessary because null value bitmap can be >> placed at the beginning of body. >>> >>>> 2024年6月27日 下午6:46,Jingsong Li <jingsongl...@gmail.com> 写道: >>>> >>>> Thanks guanshi for starting this discussion. >>>> >>>> I saw your suggestion in the document regarding omitting certain >>>> fields. The question is whether we should introduce a compact format. >>>> >>>> Indeed, there may be situations where there are many values, and >>>> introducing a compact format makes sense. >>>> >>>> Consider: >>>> >>>> -- head >>>> version: 1 byte >>>> row count: 4 bytes int >>>> non-null value bitmap number: 4 bytes int >>>> has null value: 1 byte >>>> null value offset: 4 bytes if has null value >>>> value x: var bytes for any data type (as >>>> bitmap identifier) >>>> offset: 4 bytes int >>>> >>>> -- body >>>> serialized bitmap1 >>>> serialized bitmap2 >>>> serialized bitmap3 >>>> >>>> Optimization: >>>> >>>> Offset can be a negative number, and when it is negative, it >>>> represents that there is only one value, and its position is the >>>> inverse of the negative value. >>>> >>>> Best, >>>> Jingsong >>>> >>>> On Thu, Jun 27, 2024 at 3:50 PM guanshi <1649067...@qq.com.invalid> >> wrote: >>>>> >>>>> Hello, this is the bitmap index format I designed, and I hope to >> discuss it with everyone: >>>>> >> https://docs.google.com/document/d/1zKp_kqfoYgfmvfZ3DcNVMIXoYdxAsbe73eu98KEe3a8/edit?usp=sharing >>> >> >> >