#include "src/trace_processor/db/column/dense_null_overlay.h"
#include <algorithm>
#include <cstdint>
#include <iterator>
#include <limits>
#include <memory>
#include <optional>
#include <utility>
#include <vector>
#include "perfetto/base/logging.h"
#include "perfetto/trace_processor/basic_types.h"
#include "src/trace_processor/containers/bit_vector.h"
#include "src/trace_processor/db/column/data_layer.h"
#include "src/trace_processor/db/column/types.h"
#include "src/trace_processor/tp_metatrace.h"
#include "protos/perfetto/trace_processor/metatrace_categories.pbzero.h"
namespace perfetto::trace_processor::column {
namespace {
Indices;
std::optional<Token> RemoveAllNullsAndReturnTheFirstOne(
Indices& indices,
const BitVector& non_null) { … }
}
void DenseNullOverlay::Flatten(uint32_t* start,
const uint32_t* end,
uint32_t stride) { … }
DenseNullOverlay::ChainImpl::ChainImpl(std::unique_ptr<DataLayerChain> inner,
const BitVector* non_null)
: … { … }
SingleSearchResult DenseNullOverlay::ChainImpl::SingleSearch(
FilterOp op,
SqlValue sql_val,
uint32_t index) const { … }
SearchValidationResult DenseNullOverlay::ChainImpl::ValidateSearchConstraints(
FilterOp op,
SqlValue sql_val) const { … }
RangeOrBitVector DenseNullOverlay::ChainImpl::SearchValidated(FilterOp op,
SqlValue sql_val,
Range in) const { … }
void DenseNullOverlay::ChainImpl::IndexSearchValidated(FilterOp op,
SqlValue sql_val,
Indices& indices) const { … }
void DenseNullOverlay::ChainImpl::StableSort(Token* start,
Token* end,
SortDirection direction) const { … }
void DenseNullOverlay::ChainImpl::Distinct(Indices& indices) const { … }
std::optional<Token> DenseNullOverlay::ChainImpl::MaxElement(
Indices& indices) const { … }
std::optional<Token> DenseNullOverlay::ChainImpl::MinElement(
Indices& indices) const { … }
SqlValue DenseNullOverlay::ChainImpl::Get_AvoidUsingBecauseSlow(
uint32_t index) const { … }
}