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

An initial implementation of EXISTS #1703

Draft
wants to merge 18 commits into
base: master
Choose a base branch
from
Draft

Conversation

joka921
Copy link
Member

@joka921 joka921 commented Jan 7, 2025

This implements EXISTS via a new ExistsJoin operation (which can be seen in the "Analysis" tree when executing a query). The implementation has the following limitations, which will be addressed in future PRs:

  1. The ExistsJoin operation is about 20% slower than a comparable ordinary Join operation (in particular, the former does not yet use ad_utility::callFixedSize)
  2. The ExistsJoin operation is not yet lazy
  3. TODO: how are FILTERs inside the EXIST referring to variables outside the EXIST handled?

TODO: ...

Signed-off-by: Johannes Kalmbach <[email protected]>
Signed-off-by: Johannes Kalmbach <[email protected]>
Signed-off-by: Johannes Kalmbach <[email protected]>
Signed-off-by: Johannes Kalmbach <[email protected]>
Signed-off-by: Johannes Kalmbach <[email protected]>
Signed-off-by: Johannes Kalmbach <[email protected]>
Copy link

codecov bot commented Jan 8, 2025

Codecov Report

Attention: Patch coverage is 92.30769% with 16 lines in your changes missing coverage. Please review.

Project coverage is 89.92%. Comparing base (acb6633) to head (5294357).

Files with missing lines Patch % Lines
src/engine/sparqlExpressions/ExistsExpression.h 58.82% 6 Missing and 1 partial ⚠️
src/engine/MultiColumnJoin.cpp 20.00% 4 Missing ⚠️
src/engine/ExistsJoin.cpp 97.08% 2 Missing and 1 partial ⚠️
src/engine/ExistsJoin.h 75.00% 1 Missing ⚠️
src/util/JoinAlgorithms/FindUndefRanges.h 95.45% 0 Missing and 1 partial ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##           master    #1703      +/-   ##
==========================================
+ Coverage   89.86%   89.92%   +0.05%     
==========================================
  Files         389      392       +3     
  Lines       37308    37476     +168     
  Branches     4204     4218      +14     
==========================================
+ Hits        33527    33699     +172     
+ Misses       2485     2478       -7     
- Partials     1296     1299       +3     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

Signed-off-by: Johannes Kalmbach <[email protected]>
Signed-off-by: Johannes Kalmbach <[email protected]>
Signed-off-by: Johannes Kalmbach <[email protected]>
Signed-off-by: Johannes Kalmbach <[email protected]>
As a next step, I want to write some comments.

Signed-off-by: Johannes Kalmbach <[email protected]>
Signed-off-by: Johannes Kalmbach <[email protected]>
The only thing that is missing, is some corner case tests, and maybe cleaning up the parsing of the active dataset clauses.

Signed-off-by: Johannes Kalmbach <[email protected]>
@hannahbast hannahbast changed the title An initial implementation of EXISTS An initial implementation of EXISTS Jan 10, 2025
@sparql-conformance
Copy link

Conformance check passed ✅

Test Status Changes 📊

Number of Tests Previous Status Current Status
19 Failed Passed

Details: https://qlever.cs.uni-freiburg.de/sparql-conformance-ui?cur=52943570743cb6c9db292f6331e1b8304ab32379&prev=acb6633debc7341985341aff147b5038cc8d951b

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant