souffle
2.0.2-371-g6315b36
|
Go to the documentation of this file.
38 using RamPattern = std::pair<RamBound, RamBound>;
52 assert(pattern !=
nullptr &&
"pattern is a null-pointer");
55 assert(pattern !=
nullptr &&
"pattern is a null-pointer");
66 std::pair<std::vector<Expression*>, std::vector<Expression*>>
getRangePattern()
const {
73 res.push_back(pattern.get());
76 res.push_back(pattern.get());
81 void apply(
const NodeMapper&
map)
override {
84 pattern =
map(std::move(pattern));
87 pattern =
map(std::move(pattern));
94 resQueryPattern.first.emplace_back(
i->clone());
97 resQueryPattern.second.emplace_back(
i->clone());
149 bool equal(
const Node& node)
const override {
const std::string profileText
Text used by the profiler.
VecOwn< Expression > RamBound
Pattern type for lower/upper bound.
bool isUndefValue(const Expression *expr)
Determines if an expression represents an undefined value.
std::vector< const Node * > getChildNodes() const override
Obtain list of all embedded child nodes.
std::pair< std::vector< Expression * >, std::vector< Expression * > > getRangePattern() const
Get range pattern.
std::vector< const Node * > getChildNodes() const override
Obtain list of all embedded child nodes.
void apply(const NodeMapper &map) override
Apply the mapper to all child nodes.
Operation & getOperation() const
Get nested operation.
auto map(const std::vector< A > &xs, F &&f)
Applies a function to each element of a vector and returns the results.
const std::string relation
Search relation.
void apply(const NodeMapper &map) override
Apply the mapper to all child nodes.
auto clone(const std::vector< A * > &xs)
IndexOperation * clone() const override
Create a clone (i.e.
const std::string & getProfileText() const
Get profile text.
bool equal(const Node &node) const override
Equality check for two RAM nodes.
bool equal_targets(const Container &a, const Container &b, const Comparator &comp)
A function testing whether two containers are equal with the given Comparator.
bool equal(const Node &node) const override
Equality check for two RAM nodes.
Abstract class for operations on relations.
int getTupleId() const
Get identifier.
void printIndex(std::ostream &os) const
Helper method for printing.
RamPattern queryPattern
Values of index per column of table (if indexable)
std::pair< RamBound, RamBound > RamPattern
void rel(size_t limit, bool showLimit=true)
std::vector< T * > toPtrVector(const std::vector< std::unique_ptr< T >> &v)
A utility function enabling the creation of a vector of pointers.
IndexOperation(std::string rel, int ident, RamPattern queryPattern, Own< Operation > nested, std::string profileText="")