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

Support for Contextual Query Language #354

Merged
merged 96 commits into from Nov 1, 2021

Conversation

VishalDalwadi
Copy link
Contributor

@VishalDalwadi VishalDalwadi commented Aug 16, 2021

This implementation of CQL was part of the Google Summer of Code 2021 project "Support for Contextual Query Language".

The initial design for CQL implementation was to allow users to create JARs that contain the context set information. These JARs could then be found by a plugin manager and the CQL execution engine could use the context sets to convert the query into relation algebra.

However, after careful consideration, we came upon the current design which is much simpler (both for understanding and implementation). In the current design, the schema takes on the role of Context Set. The schema has tables which in-turn have columns. These two take on the role of index (as specified in the CQL standard spec). Filters are operations taking place on columns and Relations are the output of combine operation ( Joins or Set Operations ) on tables.

@vogti vogti changed the title Support for Contextual Query Language [Google Summer of Code 2021] Support for Contextual Query Language Sep 30, 2021
@vogti
Copy link
Member

vogti commented Oct 1, 2021

Hi @VishalDalwadi Thank you for this contribution. While testing, I found the following bug: It is not possible to sort by a column that is not projected (results in a null pointer). Here is a query to reproduce this:
relation public.depts sortby public.depts.deptno project public.depts.name
Is this something you can easily fix?

Here is an overview on the most important changes I did:

  • Separated CQL interface from REST interface and added a simple HTTP interface for submitting CQL queries using port 8087.
  • Use POST requests instead of GET requests (GET with body is not supported by all clients).
  • Reorganized the tests and moved some tests into the cql-interface module.

The README file we would like to put on the documentation section of the website, if this is ok for you?

@VishalDalwadi
Copy link
Contributor Author

Hi @vogti. Yes, all of those changes are fine by me. I will sort out the issue. I believe we are creating the sort node after creating the projection node, so a reference to the sorting node cannot be created. But I am not completely sure. I will look into it. No worries.

@VishalDalwadi
Copy link
Contributor Author

VishalDalwadi commented Nov 1, 2021

Hi @vogti. I've restored the README file and documented the behavior for sorting on a column that is not present in projection.

Copy link
Member

@vogti vogti left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks, @VishalDalwadi, for this PR!

@VishalDalwadi
Copy link
Contributor Author

Thanks, @VishalDalwadi, for this PR!

Thanks, @vogti, @hennlo, @cedricmendelin for your help along the way. I look forward to working with you again.

@vogti vogti merged commit 3292963 into polypheny:master Nov 1, 2021
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.

None yet

2 participants