美文网首页大数据
实现Apache Doris的bitmap相关函数过程中遇到的问

实现Apache Doris的bitmap相关函数过程中遇到的问

作者: 希望是水户洋平 | 来源:发表于2021-05-11 14:38 被阅读0次

文章来由

正如题目所言,最近笔者在尝试解决Doris的bitmap函数相关的一些issue,如bitmap_max函数、bitmap_andnot函数的实现。

一些值得关注的高光源码

//bitmap_value.h的Roaring64Map类的maximum()函数和minimum()函数
/**
     * Return the largest value (if not empty)
     *
     */
    uint64_t maximum() const {
        for (auto roaring_iter = roarings.crbegin(); roaring_iter != roarings.crend();
             ++roaring_iter) {
            if (!roaring_iter->second.isEmpty()) {
                return uniteBytes(roaring_iter->first, roaring_iter->second.maximum());
            }
        }
        // we put std::numeric_limits<>::max/min in parenthesis
        // to avoid a clash with the Windows.h header under Windows
        return (std::numeric_limits<uint64_t>::min)();
    }

    /**
     * Return the smallest value (if not empty)
     *
     */
    uint64_t minimum() const {
        for (auto roaring_iter = roarings.cbegin(); roaring_iter != roarings.cend();
             ++roaring_iter) {
            if (!roaring_iter->second.isEmpty()) {
                return uniteBytes(roaring_iter->first, roaring_iter->second.minimum());
            }
        }
        // we put std::numeric_limits<>::max/min in parenthesis
        // to avoid a clash with the Windows.h header under Windows
        return (std::numeric_limits<uint64_t>::max)();
    }

可以看到maximum函数和minimum函数的末尾为了 avoid a clash with the Windows.h header under Windows,选择了返回(std::numeric_limits<uint64_t>::min)()和(std::numeric_limits<uint64_t>::max)(),这么做的进一步解释:

相关文章

网友评论

    本文标题:实现Apache Doris的bitmap相关函数过程中遇到的问

    本文链接:https://www.haomeiwen.com/subject/niygdltx.html