Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Extend PrefilterExpression for Literal and Iri #1653

Merged
merged 124 commits into from
Dec 6, 2024
Merged
Changes from 1 commit
Commits
Show all changes
124 commits
Select commit Hold shift + click to select a range
99da434
Added conversion str to int
realHannes Apr 25, 2024
424d023
templated function for toNumeric, add declaration to NaryExpression.h
realHannes Apr 25, 2024
0117e82
str to num for SparqlExpression implemented + added test
realHannes Apr 25, 2024
35fd0b1
Merge branch 'ad-freiburg:master' into master
realHannes Apr 26, 2024
94356c2
Update src/engine/sparqlExpressions/StringExpressions.cpp
realHannes Apr 26, 2024
decc8ba
Update src/engine/sparqlExpressions/StringExpressions.cpp
realHannes Apr 26, 2024
850152c
Update src/engine/sparqlExpressions/StringExpressions.cpp
realHannes Apr 26, 2024
d650d67
Update src/engine/sparqlExpressions/StringExpressions.cpp
realHannes Apr 26, 2024
46cc697
using now absl::from_chars() and stripping whitespaces for string to …
realHannes Apr 26, 2024
7fc5c28
added new functions to processIriFuntionCall() (for string to number)
realHannes Apr 26, 2024
efb0e24
renaming to: toIntExpression and toDoubleExpression for later more ge…
realHannes Apr 26, 2024
a88537c
made format (clang-format-16)
realHannes Apr 26, 2024
ca1e2e0
Update src/parser/sparqlParser/SparqlQleverVisitor.cpp
realHannes Apr 29, 2024
4adc831
Update src/parser/sparqlParser/SparqlQleverVisitor.cpp
realHannes Apr 29, 2024
d0f0d63
renaming in NaryExpression.h for accordance with other function, addi…
realHannes Apr 29, 2024
a118609
added test coverage for function calls makeIntExpression and make Dou…
realHannes Apr 29, 2024
062052e
toNumeric has now correct behavior and uses absl::from_chars() and st…
realHannes Apr 29, 2024
6d0f42a
made clang-format for NaryExpressionImpl.h
realHannes Apr 29, 2024
f90b8e2
Merge branch 'ad-freiburg:master' into master
realHannes May 6, 2024
fb88493
Merge branch 'ad-freiburg:master' into master
realHannes May 15, 2024
b2eb514
Merge remote-tracking branch 'upstream/master'
realHannes May 16, 2024
b165ac1
Merge branch 'ad-freiburg:master' into master
realHannes Jun 1, 2024
7a3dfb2
Merge branch 'master' of https://github.com/realHannes/qlever
realHannes Jun 1, 2024
fc0ad3a
Merge branch 'ad-freiburg:master' into master
realHannes Jun 6, 2024
f3e6086
Merge branch 'ad-freiburg:master' into master
realHannes Jun 7, 2024
fd4c351
Merge branch 'ad-freiburg:master' into master
realHannes Jun 10, 2024
220c9bf
Merge branch 'ad-freiburg:master' into master
realHannes Jun 12, 2024
a81cb8a
Merge branch 'ad-freiburg:master' into master
realHannes Jun 13, 2024
acc0109
Merge branch 'ad-freiburg:master' into master
realHannes Jun 14, 2024
cb8e560
Merge branch 'ad-freiburg:master' into master
realHannes Jun 20, 2024
2b39970
Merge branch 'ad-freiburg:master' into master
realHannes Jun 28, 2024
a0101e4
Merge branch 'ad-freiburg:master' into master
realHannes Jun 30, 2024
47dee1d
Merge branch 'ad-freiburg:master' into master
realHannes Sep 4, 2024
a8625f9
Merge branch 'ad-freiburg:master' into master
realHannes Sep 9, 2024
7f95069
Merge branch 'ad-freiburg:master' into master
realHannes Sep 12, 2024
28b8a69
Merge branch 'ad-freiburg:master' into master
realHannes Sep 13, 2024
7bb6e01
Merge branch 'ad-freiburg:master' into master
realHannes Sep 14, 2024
edc974a
Add implementation for pre-filtering blocks on their metadata
realHannes Sep 18, 2024
ca6c2ff
Merge branch 'master' into prefilter_on_metadata_relational
realHannes Sep 18, 2024
46be51a
fix spelling error
realHannes Sep 18, 2024
0385b56
add namespace for CompressedBlockPrefiltering.h
realHannes Sep 18, 2024
5707338
use std::ranges::set_union, std::ranges::upper_bound/lower_bound
realHannes Sep 18, 2024
c9687ec
move template specializations into namespace prefilterExpressions
realHannes Sep 18, 2024
d8246f7
fix
realHannes Sep 18, 2024
66b4872
hopefully fix namespace issue
realHannes Sep 18, 2024
e4eddc4
Merge branch 'ad-freiburg:master' into prefilter_on_metadata_relational
realHannes Sep 20, 2024
b5d7dd7
first adaptations regarding the comments
realHannes Sep 20, 2024
802e3aa
Merge branch 'ad-freiburg:master' into prefilter_on_metadata_relational
realHannes Sep 23, 2024
662b1d4
applied suggestions from review
realHannes Sep 24, 2024
510aa9e
fix std::move
realHannes Sep 24, 2024
0d7f75b
Merge branch 'ad-freiburg:master' into prefilter_on_metadata_relational
realHannes Sep 25, 2024
c119200
adjusted CompressedBlockPrefiltering
realHannes Sep 26, 2024
af17181
mark method with override
realHannes Sep 26, 2024
3d7238d
Merge branch 'master' into prefilter_on_metadata_relational
realHannes Oct 8, 2024
5af6138
make further changes to prefiltering procedure and its tests
realHannes Oct 8, 2024
b02dc57
add additional testing on IDs from other datatypes
realHannes Oct 8, 2024
eb86f1b
addition to test Not Expression with And and Or
realHannes Oct 8, 2024
69ed019
changes to test and fix index check fail
realHannes Oct 9, 2024
854322b
increase test coverage for Not expression
realHannes Oct 9, 2024
b2aa689
just add all mixed blocks
realHannes Oct 9, 2024
546c3b3
Merge branch 'ad-freiburg:master' into prefilter_on_metadata_relational
realHannes Oct 9, 2024
7e61cb1
remove unnecessary values in test context
realHannes Oct 9, 2024
009ebed
for sonar check
realHannes Oct 10, 2024
6c19bf6
Merge branch 'ad-freiburg:master' into prefilter_on_metadata_relational
realHannes Oct 10, 2024
bf733ce
Merge branch 'ad-freiburg:master' into environment_for_using_prefilte…
realHannes Oct 12, 2024
5b42c1f
methods to get PrefilterExpresssions from RelationalExpressions (Spar…
realHannes Oct 12, 2024
6cf6609
Completed the implementation for constructing PrefilterExpressions fr…
realHannes Oct 22, 2024
18c4c84
Merge branch 'master' into environment_for_using_prefiltering
realHannes Oct 22, 2024
e4be1fe
all builds should compile now
realHannes Oct 22, 2024
bde09cd
Merge branch 'ad-freiburg:master' into environment_for_using_prefilte…
realHannes Oct 22, 2024
74756fe
fix build issue and increase test coverage
realHannes Oct 22, 2024
1278d39
Merge branch 'master' into environment_for_using_prefiltering
realHannes Oct 22, 2024
47d3d56
Merge branch 'ad-freiburg:master' into environment_for_using_prefilte…
realHannes Oct 25, 2024
49de4d0
introduce test structure from PR1 (#1503)
realHannes Oct 25, 2024
fcefdf0
Merge branch 'master' into environment_for_using_prefiltering
realHannes Oct 28, 2024
9f0efc6
fix build
realHannes Oct 28, 2024
25f325a
implement proposed changes (2)
realHannes Oct 30, 2024
d65acc3
correction for codespell check
realHannes Oct 30, 2024
f85a96f
fix for codespell
realHannes Oct 30, 2024
0a188a5
Merge branch 'ad-freiburg:master' into environment_for_using_prefilte…
realHannes Oct 31, 2024
5f4e586
remove optionality (std::optional) for return value
realHannes Oct 31, 2024
8062753
Merge branch 'ad-freiburg:master' into environment_for_using_prefilte…
realHannes Nov 4, 2024
c06de60
implement proposed improvements (4)
realHannes Nov 4, 2024
95e9027
further adjustments + apply PrefilterExpressions in IndexScan
realHannes Nov 11, 2024
0992fab
Merge branch 'master' into environment_for_using_prefiltering
realHannes Nov 11, 2024
f489b24
few additional adaptations
realHannes Nov 11, 2024
1340021
Make `CartesianProductJoin` lazy. (#1609)
RobinTF Nov 13, 2024
23cea27
Get `PrefilterExpression` from `SparqlExpression` (#1613)
realHannes Nov 14, 2024
5144b47
Add STDEV() aggregate function (#1614)
ullingerc Nov 14, 2024
e9e6f8d
Merge located triples when performing index scans (#1597)
joka921 Nov 14, 2024
96ded86
Merge branch 'master' into implement-apply-prefilter-expressions
realHannes Nov 15, 2024
45cc1b4
changes w.r.t. comments from #1573
realHannes Nov 18, 2024
0a3f67e
Merge branch 'ad-freiburg:master' into implement-apply-prefilter-expr…
realHannes Nov 19, 2024
0b30ad3
updates from code review (1)
realHannes Nov 20, 2024
4bf0d01
Merge branch 'ad-freiburg:master' into implement-apply-prefilter-expr…
realHannes Nov 20, 2024
54c00ad
first empty prefilter scan fix
realHannes Nov 21, 2024
118ad87
Fix the bug that always disables prefilter expressions.
joka921 Nov 21, 2024
f47cc2c
Merge branch 'ad-freiburg:master' into implement-apply-prefilter-expr…
realHannes Nov 21, 2024
61a15ce
select only Variable for first column index + extend constructor
realHannes Nov 21, 2024
6ef031b
set multiplicities in IndexScan constructor
realHannes Nov 21, 2024
bef8211
changes for review (1)
realHannes Nov 23, 2024
80d54df
changes for review (2)
realHannes Nov 24, 2024
25eb418
correction for Codespell
realHannes Nov 24, 2024
83f2363
add testing
realHannes Nov 27, 2024
097e206
Merge branch 'master' into implement-apply-prefilter-expressions
realHannes Nov 27, 2024
1574860
FilterTest fix + codespell fix
realHannes Nov 27, 2024
9de745a
simplify test in IndexScanTest
realHannes Nov 27, 2024
0a7672c
more changes
realHannes Nov 28, 2024
0ff8689
test
realHannes Nov 28, 2024
bef9326
Merge branch 'master' into implement-apply-prefilter-expressions
realHannes Nov 29, 2024
6e54939
fix test error
realHannes Nov 29, 2024
2751fe1
adapt code part merge conflict
realHannes Nov 29, 2024
406e323
implement use PrefilterExpression for Iri and Literals (1)
realHannes Nov 30, 2024
36b00f3
implement use PrefilterExpression for Iri and Literals (2)
realHannes Dec 2, 2024
b242221
Fix deadlock in lazy join implementation (#1650)
RobinTF Nov 29, 2024
792dd39
Correctly handle the cache in the presence of SPARQL UPDATE (#1646)
joka921 Nov 29, 2024
1a6e5b2
Update graph info in the augmented block metadata (#1642)
joka921 Nov 29, 2024
863a337
Apply binary search filter expressions directly on the block metadata…
realHannes Dec 2, 2024
6a69fc9
Merge branch 'master' into extend-prefilter-for-literals
realHannes Dec 2, 2024
513dcd1
test prefiltering with LocalVocabEntry reference values
realHannes Dec 3, 2024
169bf08
add Literal/Iri value tests for GetPrefilterExpressionFromSparqlExpre…
realHannes Dec 3, 2024
4d7b413
changes for review (1)
realHannes Dec 4, 2024
99fb34b
changes for code review (2)
realHannes Dec 5, 2024
b88f3b1
changes for code review (3)
realHannes Dec 5, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Get PrefilterExpression from SparqlExpression (#1613)
The `SparqlExpression` base class has been extended with the method `getPrefilterExpressionForMetadata`. This method constructs for suitable (logical) expressions which are used inside a `FILTER` a corresponding `PrefilterExpression` (see PR #1503). These `PrefilterExpression`s can be used to prefilter the blocks of an `IndexScan` by only looking at their metadata.
At the moment, the following expressions provide an overriden implementation of `getPrefilterExpressionForMetadata`: `strstarts` (preliminary), `logical-or` and `logical-and` (binary),  `logical-not` (unary) and the standard `RelationalExpressions (<, ==, >, <=, >=)`.
realHannes committed Nov 15, 2024

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
commit 23cea273369bcc333444ff7cdb4944545b5f4db3
3 changes: 2 additions & 1 deletion src/engine/sparqlExpressions/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -18,6 +18,7 @@ add_library(sparqlExpressions
ConvertToNumericExpression.cpp
RdfTermExpressions.cpp
LangExpression.cpp
CountStarExpression.cpp)
CountStarExpression.cpp
PrefilterExpressionIndex.cpp)

qlever_target_link_libraries(sparqlExpressions util index Boost::url)
Original file line number Diff line number Diff line change
@@ -2,7 +2,7 @@
// Chair of Algorithms and Data Structures
// Author: Hannes Baumann <baumannh@informatik.uni-freiburg.de>

#include "index/CompressedBlockPrefiltering.h"
#include "engine/sparqlExpressions/PrefilterExpressionIndex.h"

#include <ranges>

@@ -286,7 +286,7 @@ std::unique_ptr<PrefilterExpression> RelationalExpression<Comparison>::clone()

//______________________________________________________________________________
template <CompOp Comparison>
std::string RelationalExpression<Comparison>::info(
std::string RelationalExpression<Comparison>::asString(
[[maybe_unused]] size_t depth) const {
std::stringstream stream;
stream << "Prefilter RelationalExpression<" << getRelationalOpStr(Comparison)
@@ -352,11 +352,11 @@ std::unique_ptr<PrefilterExpression> LogicalExpression<Operation>::clone()

//______________________________________________________________________________
template <LogicalOperator Operation>
std::string LogicalExpression<Operation>::info(size_t depth) const {
std::string LogicalExpression<Operation>::asString(size_t depth) const {
std::string child1Info =
depth < maxInfoRecursion ? child1_->info(depth + 1) : "MAX_DEPTH";
depth < maxInfoRecursion ? child1_->asString(depth + 1) : "MAX_DEPTH";
std::string child2Info =
depth < maxInfoRecursion ? child2_->info(depth + 1) : "MAX_DEPTH";
depth < maxInfoRecursion ? child2_->asString(depth + 1) : "MAX_DEPTH";
std::stringstream stream;
stream << "Prefilter LogicalExpression<" << getLogicalOpStr(Operation)
<< ">\n"
@@ -395,15 +395,27 @@ std::unique_ptr<PrefilterExpression> NotExpression::clone() const {
};

//______________________________________________________________________________
std::string NotExpression::info(size_t depth) const {
std::string NotExpression::asString(size_t depth) const {
std::string childInfo =
depth < maxInfoRecursion ? child_->info(depth + 1) : "MAX_DEPTH";
depth < maxInfoRecursion ? child_->asString(depth + 1) : "MAX_DEPTH";
std::stringstream stream;
stream << "Prefilter NotExpression:\n"
<< "child {" << childInfo << "}" << std::endl;
return stream.str();
}

//______________________________________________________________________________
// Instanitate templates with specializations (for linking accessibility)
template class RelationalExpression<CompOp::LT>;
template class RelationalExpression<CompOp::LE>;
template class RelationalExpression<CompOp::GE>;
template class RelationalExpression<CompOp::GT>;
template class RelationalExpression<CompOp::EQ>;
template class RelationalExpression<CompOp::NE>;

template class LogicalExpression<LogicalOperator::AND>;
template class LogicalExpression<LogicalOperator::OR>;

namespace detail {
//______________________________________________________________________________
void checkPropertiesForPrefilterConstruction(
Original file line number Diff line number Diff line change
@@ -11,6 +11,16 @@
#include "global/ValueIdComparators.h"
#include "index/CompressedRelation.h"

// For certain SparqlExpressions it is possible to perform a prefiltering
// procedure w.r.t. relevant data blocks / ValueId values by making use of the
// available metadata (see CompressedBlockMetadata in CompressedRelation.h)
// while performing the index scan. As a result, the actual SparqlExpression
// evaluation is performed for a smaller IdTable if a PrefilterExpression
// (declared in this file) for the respective SparqlExpression is available and
// compatible with the IndexScan. The following SparqlExpressions construct a
// PrefilterExpression if possible: logical-or, logical-and, logical-negate
// (unary), relational-ops. and strstarts.

namespace prefilterExpressions {

//______________________________________________________________________________
@@ -49,7 +59,7 @@ class PrefilterExpression {
virtual std::unique_ptr<PrefilterExpression> clone() const = 0;

// Format content for debugging.
virtual std::string info(size_t depth) const = 0;
virtual std::string asString(size_t depth) const = 0;

// Needed for implementing the `NotExpression`. This method is required,
// because we logically operate on `BlockMetadata` values which define ranges
@@ -78,7 +88,7 @@ class PrefilterExpression {
// Format for debugging
friend std::ostream& operator<<(std::ostream& str,
const PrefilterExpression& expression) {
str << expression.info(0) << "." << std::endl;
str << expression.asString(0) << "." << std::endl;
return str;
}

@@ -110,7 +120,7 @@ class RelationalExpression : public PrefilterExpression {
std::unique_ptr<PrefilterExpression> logicalComplement() const override;
bool operator==(const PrefilterExpression& other) const override;
std::unique_ptr<PrefilterExpression> clone() const override;
std::string info([[maybe_unused]] size_t depth) const override;
std::string asString(size_t depth) const override;

private:
std::vector<BlockMetadata> evaluateImpl(
@@ -140,7 +150,7 @@ class LogicalExpression : public PrefilterExpression {
std::unique_ptr<PrefilterExpression> logicalComplement() const override;
bool operator==(const PrefilterExpression& other) const override;
std::unique_ptr<PrefilterExpression> clone() const override;
std::string info(size_t depth) const override;
std::string asString(size_t depth) const override;

private:
std::vector<BlockMetadata> evaluateImpl(
@@ -154,36 +164,25 @@ class NotExpression : public PrefilterExpression {
std::unique_ptr<PrefilterExpression> child_;

public:
// `makeCopy` should always be set to `false`, except when it is called within
// the implementation of the `clone()` method. For the copy construction,
// the `logicalComplement` for the child is omitted because it has
// already been complemented for the original expression.
explicit NotExpression(std::unique_ptr<PrefilterExpression> child,
bool makeCopy = false)
// If we create a copy, the child expression has already been
// complemented while creating the original expression. Thus, just move
// the child.
: child_(makeCopy ? std::move(child) : child->logicalComplement()) {}

std::unique_ptr<PrefilterExpression> logicalComplement() const override;
bool operator==(const PrefilterExpression& other) const override;
std::unique_ptr<PrefilterExpression> clone() const override;
std::string info(size_t depth) const override;
std::string asString(size_t depth) const override;

private:
std::vector<BlockMetadata> evaluateImpl(
const std::vector<BlockMetadata>& input,
size_t evaluationColumn) const override;
};

//______________________________________________________________________________
// Instanitate templates with specializations (for linking accessibility)
template class RelationalExpression<CompOp::LT>;
template class RelationalExpression<CompOp::LE>;
template class RelationalExpression<CompOp::GE>;
template class RelationalExpression<CompOp::GT>;
template class RelationalExpression<CompOp::EQ>;
template class RelationalExpression<CompOp::NE>;

template class LogicalExpression<LogicalOperator::AND>;
template class LogicalExpression<LogicalOperator::OR>;

//______________________________________________________________________________
// Definition of the RelationalExpression for LT, LE, EQ, NE, GE and GT.
using LessThanExpression = prefilterExpressions::RelationalExpression<
7 changes: 7 additions & 0 deletions src/engine/sparqlExpressions/SparqlExpression.cpp
Original file line number Diff line number Diff line change
@@ -109,6 +109,13 @@ Estimates SparqlExpression::getEstimatesForFilterExpression(
}

// _____________________________________________________________________________
// The default implementation returns an empty vector given that for most
// `SparqlExpressions` no pre-filter procedure is available. Only specific
// expressions that yield boolean values support the construction of
// <`PrefilterExpression`, `Variable`> pairs. For more information, refer to the
// declaration of this method in SparqlExpression.h. `SparqlExpression`s for
// which pre-filtering over the `IndexScan` is supported, override the virtual
// `getPrefilterExpressionForMetadata` method declared there.
std::vector<PrefilterExprVariablePair>
SparqlExpression::getPrefilterExpressionForMetadata(
[[maybe_unused]] bool isNegated) const {
24 changes: 17 additions & 7 deletions src/engine/sparqlExpressions/SparqlExpression.h
Original file line number Diff line number Diff line change
@@ -96,14 +96,24 @@ class SparqlExpression {
[[maybe_unused]] const std::optional<Variable>& primarySortKeyVariable)
const;

// Returns a vector with pairs, each containing a `PrefilterExpression` and
// the corresponding `Variable`. The `Variable` indicates which
// column is required to be sorted, and hence is as a consequence also binary
// evaluable regarding the relational (e.g. `>=`) / logical (`&&`, `||` and
// `!`) expressions.
// Returns a vector of pairs, each containing a `PrefilterExpression` and its
// corresponding `Variable`. The `Variable` corresponds to the column (index
// column) for which we want to perform the pre-filter procedure.
// For the following SparqlExpressions, a pre-filter procedure can be
// performed given a suitable PrefilterExpression can be constructed:
// `logical-or`, `logical-and`, `logical-negate` (unary), `relational` and
// `strstarts`.
// `isNegated` is set to `false` by default. This boolean flag is toggled to
// `true` if a `logical-negate` (!) expression (see
// `UnaryNegateExpressionImpl` in NumericUnaryExpressions.cpp) is visited,
// allowing this negation information to be passed to the children of the
// respective expression tree. `isNegated` is used to select the suitable
// merge procedure on the children's `PrefilterExpression`s for `logical-and`
// and `logical-or` when constructing their corresponding vector of
// <`PrefilterExpression`, `Variable`> pairs (see `getMergeFunction` in
// NumericBinaryExpression.cpp).
virtual std::vector<PrefilterExprVariablePair>
getPrefilterExpressionForMetadata(
[[maybe_unused]] bool isNegated = false) const;
getPrefilterExpressionForMetadata(bool isNegated = false) const;

// Returns true iff this expression is a simple constant. Default
// implementation returns `false`.
4 changes: 2 additions & 2 deletions src/engine/sparqlExpressions/SparqlExpressionPimpl.cpp
Original file line number Diff line number Diff line change
@@ -94,8 +94,8 @@ auto SparqlExpressionPimpl::getEstimatesForFilterExpression(

//_____________________________________________________________________________
std::vector<PrefilterExprVariablePair>
SparqlExpressionPimpl::getPrefilterExpressionForMetadata(bool isNegated) const {
return _pimpl->getPrefilterExpressionForMetadata(isNegated);
SparqlExpressionPimpl::getPrefilterExpressionForMetadata() const {
return _pimpl->getPrefilterExpressionForMetadata();
}

// _____________________________________________________________________________
14 changes: 11 additions & 3 deletions src/engine/sparqlExpressions/SparqlExpressionPimpl.h
Original file line number Diff line number Diff line change
@@ -9,7 +9,7 @@
#include <vector>

#include "engine/VariableToColumnMap.h"
#include "index/CompressedBlockPrefiltering.h"
#include "engine/sparqlExpressions/PrefilterExpressionIndex.h"
#include "parser/data/Variable.h"
#include "util/HashMap.h"
#include "util/HashSet.h"
@@ -19,6 +19,12 @@ namespace sparqlExpression {
class SparqlExpression;
struct EvaluationContext;

// Improve return type readability.
// Pair containing `PrefilterExpression` pointer and a `Variable`.
using PrefilterExprVariablePair =
std::pair<std::unique_ptr<prefilterExpressions::PrefilterExpression>,
Variable>;

// Improve return type readability.
// Pair containing `PrefilterExpression` pointer and a `Variable`.
using PrefilterExprVariablePair =
@@ -118,8 +124,10 @@ class SparqlExpressionPimpl {
uint64_t inputSizeEstimate,
const std::optional<Variable>& primarySortKeyVariable);

std::vector<PrefilterExprVariablePair> getPrefilterExpressionForMetadata(
bool isNegated = false) const;
// For a concise description of this method and its functionality, refer to
// the corresponding declaration in SparqlExpression.h.
std::vector<PrefilterExprVariablePair> getPrefilterExpressionForMetadata()
const;

SparqlExpression* getPimpl() { return _pimpl.get(); }
[[nodiscard]] const SparqlExpression* getPimpl() const {
1 change: 0 additions & 1 deletion src/index/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -6,6 +6,5 @@ add_library(index
DocsDB.cpp FTSAlgorithms.cpp
PrefixHeuristic.cpp CompressedRelation.cpp
PatternCreator.cpp ScanSpecification.cpp
CompressedBlockPrefiltering.cpp
DeltaTriples.cpp LocalVocabEntry.cpp)
qlever_target_link_libraries(index util parser vocabulary ${STXXL_LIBRARIES})
4 changes: 3 additions & 1 deletion test/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -291,7 +291,9 @@ addLinkAndDiscoverTest(AlgorithmTest)

addLinkAndDiscoverTestSerial(CompressedRelationsTest index)

addLinkAndDiscoverTestSerial(CompressedBlockPrefilteringTest sparqlExpressions index engine)
addLinkAndDiscoverTestSerial(PrefilterExpressionIndexTest sparqlExpressions index)

addLinkAndDiscoverTestSerial(GetPrefilterExpressionFromSparqlExpressionTest sparqlExpressions index)

addLinkAndDiscoverTest(ExceptionTest)

Loading