Database Systems

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.


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.