| 957 | } |
| 958 | } |
| 959 | |
| 960 | return std::nullopt; |
| 961 | } |
| 962 | |
| 963 | std::string printNulls(const BufferPtr& nulls, vector_size_t maxBitsToPrint) { |
| 964 | BOLT_CHECK_GE(maxBitsToPrint, 0); |
| 965 | |
| 966 | vector_size_t totalCount = nulls->size() * 8; |
| 967 | auto* rawNulls = nulls->as<uint64_t>(); |
| 968 | auto nullCount = bits::countNulls(rawNulls, 0, totalCount); |
| 969 | |
| 970 | std::stringstream out; |
| 971 | out << nullCount << " out of " << totalCount << " rows are null"; |
| 972 | |
| 973 | if (nullCount) { |
| 974 | out << ": "; |
| 975 | for (auto i = 0; i < maxBitsToPrint && i < totalCount; ++i) { |
| 976 | out << (bits::isBitNull(rawNulls, i) ? "n" : "."); |
| 977 | } |
| 978 | } |
| 979 | |
| 980 | return out.str(); |