Student Research Projects (Forschungsprojekte)
The Department of Computer Science offers Master’s students the opportunity to take part in a
research project. This course (INFO-4998) is worth 9 credits. It provides a deeper insight
into the scientific work of the research group and allows students to work on current scientific
issues. The course overview
of the department provides a more detailed description.
We, the Chair of Database Systems, also offer research projects. Research projects belong to the module INFO-INFO.
We are currently working intensively on the DuckDB database system and are
constantly contributing to the source code.
Application
The start of a research project is often flexible in terms of time. As we do not always have specific
projects ready, you should get in touch with us early. Please send your application to
db-lehre@cs.uni-tuebingen.de
and include
- your name,
- matriculation number,
- study program, and
- a list of all relevant courses you have attended (in the areas of database systems, SQL, C++).
Please also briefly explain your motivation for the research project with us and what you are particularly interested in.
In Progress
Tina Truong
Enhancing the MATCH_RECOGNIZE Transpiler
The Project
MATCH_RECOGNIZE is a SQL clause that was first added to the SQL Standard in
2016. It provides an expressive tool for row pattern matching, i.e., finding
sequences of ordered rows that follow a user-defined pattern.
SQL:1999 introduced WITH RECURSIVE—or recursive common table expressions (CTEs)—a
true game changer which turned SQL into a Turing-complete programming language.
Thus, SQL is capable of realizing row pattern matching without the usage of
MATCH_RECOGNIZE.
Svea Gänzle
Enhancing the MATCH_RECOGNIZE Transpiler: NFA
The Project
MATCH_RECOGNIZE is a SQL clause that was first added to the SQL Standard in
2016. It provides an expressive tool for row pattern matching, i.e., finding
sequences of ordered rows that follow a user-defined pattern.
SQL:1999 introduced WITH RECURSIVE—or recursive common table expressions (CTEs)—a
true game changer which turned SQL into a Turing-complete programming language.
Thus, SQL is capable of realizing row pattern matching without the usage of
MATCH_RECOGNIZE.
Nico Faden
PL/pegSQL: Writing a PEG Parser for PL/pgSQL from scratch
Modern languages and systems like Python and DuckDB are changing their parsing strategy from legacy parsing systems to the more modern PEG (Parsing Expression Grammar) approach. While parsers like those generated with Yacc/Bison grammars are notoriously rigid and difficult to modify and extend, PEG offers easy adaptation for new language features and research extensions while not relying on established parsing frameworks.
This research project explores the design and implementation of a PEG-based parser for PL/pgSQL—PostgreSQL’s procedural language extension for SQL.
Contact:
Tim Fischer
2024
Alexander Götz
JSON in DuckDB
DuckDB is an open source in-process SQL OLAP database management system and comes with an extension for JSON values.
However, there are certain features that are not implemented at this time. This project aims to identify these missing features, implement and test them, and ideally have them merged.
This project requires knowledge of C++ development as well as knowledge of database systems internals (i.e., as discussed in our DuckDB seminar).
2023
Romain Carl
EXCLUDE for window functions and range as table in-out function in DuckDB
DuckDB is an open source in-process SQL OLAP database management system and comes
with a variety of SQL features.
However, their implementation of window function lacks EXCLUDE clauses. This project
aims to add this functionality to DuckDB, and ideally have them merged.
Original GitHub pull request #8311 and
final pull request #9220 in joint
work with other DuckDB collaborators.
Furthermore, generate_series and range functions are implemented in an unusual way in
DuckDB. Another objective of this project was reimplementing unnesting and range
functions as table in-out functions.
GitHub pull request #7522.
Contact:
Denis Hirn