Manuel Rigger

School of Computing
National University of Singapore
COM2-3-29, 13 Computing Drive
Singapore 117417
Manuel Rigger is an Assistant Professor leading the TEST Lab, which is part of the PL/SE group at the School of Computing, National University of Singapore. He is working on software reliability, data-centric systems, and programming language implementation. In his recent work, he has been focusing on automatically testing Database Management Systems, part of which he found over 450 bugs in widely-used systems such as SQLite, MySQL, PostgreSQL, MariaDB, and CockroachDB. Prior to joining NUS, Manuel was a postdoc at the Advanced Software Technologies Lab at ETH Zurich, mentored by Zhendong Su. He completed his PhD at Johannes Kepler University Linz, mentored by Hanspeter Mössenböck, where he worked on the safe and efficient execution of unsafe languages (project Sulong). Part of his work was integrated into Oracle’s GraalVM to support the execution of LLVM IR on this platform.
I have several openings including postdoctoral positions. Reach out to me if you are interested in working with me!
Contact: rigger@nus.edu.sg
Project Links: [SQLancer] [Sulong] [Interview Questions for CS Faculty Jobs] [Getting Academic Positions (GAP) Interviewing Series]
News (all)
Nov 1, 2023 | I will serve on the ICSE 2025 PC. |
Oct 10, 2023 | Our paper “Finding Performance Issues in Database Engines via Cardinality Estimation Testing” was accepted at ICSE 2024. |
Oct 10, 2023 | Anja Gruenheid and I were invited to co-chair the DBTest workshop at SIGMOD 2024. |
Aug 24, 2023 | Our paper “Detecting Logic Bugs in Graph Database Management Systems via Injective and Surjective Graph Pattern Transformation” was accepted at ICSE 2024. |
Aug 8, 2023 | I will present our work on SQLancer at the Data Engineering Meetup in Singapore on September 6. |
Main Projects
Selected Publications (all)
ICSE 2024 |
Finding Performance Issues in Database Engines via Cardinality Estimation Testing Jinsheng Ba, Manuel Rigger Proceedings of the 46th International Conference on Software Engineering, Lisbon, Portugal [PDF] [GitHub] |
ICSE 2023 |
Testing Database Engines via Query Plan Guidance Jinsheng Ba, Manuel Rigger Proceedings of the 45th International Conference on Software Engineering, Melbourne, Australia [PDF] [GitHub] [Artifact] |
ASPLOS 2022 |
Finding Missed Optimizations through the Lens of Dead Code Elimination Theodoros Theodoridis, Manuel Rigger, Zhendong Su Proceedings of the 27th ACM International Conference on Architectural Support for Programming Languages and Operating Systems, Lausanne, Switzerland [PDF] [DOI] [YouTube] [Artifact] [GitHub] |
OSDI 2020 |
Testing Database Engines via Pivoted Query Synthesis Manuel Rigger, Zhendong Su 14th USENIX Symposium on Operating Systems Design and Implementation (OSDI 20), Banff, Alberta, Canada [PDF] [Artifact] [Page] [Slides (long)] [Slides (short)] |
OOPSLA 2020 |
Finding Bugs in Database Systems via Query Partitioning Manuel Rigger, Zhendong Su Proc. ACM Program. Lang. [PDF] [DOI] [Slides] [YouTube] [Artifact] |
ESEC/FSE 2020 |
Detecting Optimization Bugs in Database Engines via Non-Optimizing Reference Engine Construction Manuel Rigger, Zhendong Su Proceedings of the 2020 28th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering, Sacramento, California, United States [PDF] [DOI] [YouTube (Full)] [Slides (Teaser)] [Slides (Full)] [Reddit] [Artifact] |
ASPLOS 2018 |
Sulong, and Thanks for All the Bugs: Finding Errors in C Programs by Abstracting from the Native Execution Model Manuel Rigger, Roland Schatz, Rene Mayrhofer, Matthias Grimmer, Hanspeter Mössenböck Proceedings of the Twenty-Third International Conference on Architectural Support for Programming Languages and Operating Systems, Williamsburg, VA, USA [PDF] [Bibtex] [DOI] [Slides] [ACM authorizer link] |
Awards and Honours
Recent and Upcoming Service (all)
Organization
-
2024:
PLDI (Artifact Evaluation Co-Chair), ISSTA (Workshops Co-Chair)
-
2023:
PLDI (Artifact Evaluation Co-Chair), Dagstuhl Seminar on "Ensuring the Reliability and Robustness of Database Management Systems" (Co-organizer), MET
-
2022:
DBTest
-
2021:
OSDI (Artifact Evaluation Co-Chair), ISSTA (Artifact Evaluation Co-Chair), Dagstuhl Seminar on "Ensuring the Reliability and Robustness of Database Management Systems" (Co-organizer), ecoop-info (Mailing-List Moderator), VMIL (PC co-chair)
-
2020:
ECOOP (Artifact Evaluation Co-Chair)
PC Member
-
2025:
ICSE
-
2024:
ICSE, ICSE DS
-
2022:
ESEC/FSE 🏆, ASPLOS, ICSE 🏆, ECOOP, MoreVMs, MET
-
2021:
VLDB (Demonstration Track), DBPL
-
2020:
POPL (Artifact Evaluation Committee), ASPLOS (External Review Committee Member), MPLR, DLS, MoreVMs
Recent and Upcoming Talks (all)
-
Sentosa Software Technology Summit - Advanced Foundational Software and Systems 2023: Automatic Testing of Database Systems (hosted by Huawei)
-
Data Engineering Meetup Singapore
2023: Testing Database Systems with SQLancer
-
TAROT Summer School 2023: Towards Correct and Reliable Data-centric Systems (hosted by Mohammad Mousavi and Alastair Donaldson)
-
University College London 2023: Towards Correct and Reliable Data-centric Systems (hosted by Sergey Mechtaev)
-
Imperial College London 2023: Automatically Finding Performance Issues in Compilers and Databases (hosted by Cristian Cadar)
Teaching at NUS (all)
-
AY2023/2024 Semester 1: CS6223 "Advanced Topics in Software Testing" (Lecturer)
-
AY2022/2023 Semester 1: CS6218 "Ensuring the Correctness and Reliability of Data-Centric Systems" (Lecturer)
(Co-)supervised Theses
ETH Zurich Students
Master
-
Matteo Kamm: Testing Graph Databases using Predicate Partitioning
[GitHub]
-
Philippe Voinov: A Practical Structural Code Editor
[GitHub]
[Website]
-
Bernhard Kellermann: Finding Missed Optimizations in Query Optimizers of Relational Databases
[LinkedIn]
-
Juan Díaz Sada: Using Real-world Projects to Extract and Utilize SQL Test Cases
[GitHub]
[LinkedIn]
-
Jack Clark: Verifying Serializability Protocols With Version Order Recovery
[LinkedIn]
[GitHub]
-
Patrick Stäuble: Automatically Finding Logic Bugs in Document-Oriented Database Systems
[GitHub]
-
Dylan Wolff: Value Mutation Testing for SMT Solvers
[Website]
[Twitter]
[LinkedIn]
-
Hannes Pfammatter: Investigating the Effects of Unsafe Compiler Optimizations for Numerical Code
-
Lilian Boesch: Automatically Testing GraalVM
Bachelor
-
Tim Matter: Utilizing SMT Solvers for Database System Testing
-
Bachmann Jules: Detecting Correctness Regression Bugs in DBMS
-
Jonas Müntener: A Reduction Tool for SQL
[GitHub]
-
Attila Hirschi: Using Solvers to Provide Actionable Feedback to Developers for SQL Queries
[GitHub]
-
Andrin Bertschi: A PHP Implementation Built on GraalVM
[GitHub]
[Website]
[Twitter]
-
Antonio Russo: Incorporating Machine-level Coverage Information in Coverage-guided Fuzzing
Johannes Kepler University Linz Students
Master
-
Daniel Pekarek: A Truffle-based Interpreter for x86 Binary Code
-
Raphael Mosaner: On-stack Replacement in Truffle Interpreters for Non-structured Languages
[GitHub]
[paper]
[Twitter]
-
Josef Haider: An ECMAScript 2015-Compliant Automata-based Regular Expression Engine for Graal.js
-
Jacob Kreindl: Source-Level Debugging Support for an LLVM-IR Interpreter
[paper]
[website]
[Twitter]
Bachelor
-
Thomas Pointhuber: The Cicro Benchmarking Suite
[GitHub]
[website]
-
Florian Aufreiter: A Random Test Case Generator for Java Bytecode
[GitHub]
-
Sebastian Kloibhofer: A Class File Reducer for Debugging Java-Bytecode-Based Tools
[GitHub]
-
Daniel Pekarek: Implementing Inline Assembly Support for Sulong
-
Mario Kahlhofer: A Bytecode Interpreter for Lambdas and Streams in Java
[Twitter]
- 2024: PLDI (Artifact Evaluation Co-Chair), ISSTA (Workshops Co-Chair)
- 2023: PLDI (Artifact Evaluation Co-Chair), Dagstuhl Seminar on "Ensuring the Reliability and Robustness of Database Management Systems" (Co-organizer), MET
- 2022: DBTest
- 2021: OSDI (Artifact Evaluation Co-Chair), ISSTA (Artifact Evaluation Co-Chair), Dagstuhl Seminar on "Ensuring the Reliability and Robustness of Database Management Systems" (Co-organizer), ecoop-info (Mailing-List Moderator), VMIL (PC co-chair)
- 2020: ECOOP (Artifact Evaluation Co-Chair)
PC Member
-
2025:
ICSE
-
2024:
ICSE, ICSE DS
-
2022:
ESEC/FSE 🏆, ASPLOS, ICSE 🏆, ECOOP, MoreVMs, MET
-
2021:
VLDB (Demonstration Track), DBPL
-
2020:
POPL (Artifact Evaluation Committee), ASPLOS (External Review Committee Member), MPLR, DLS, MoreVMs
Recent and Upcoming Talks (all)
-
Sentosa Software Technology Summit - Advanced Foundational Software and Systems 2023: Automatic Testing of Database Systems (hosted by Huawei)
-
Data Engineering Meetup Singapore
2023: Testing Database Systems with SQLancer
-
TAROT Summer School 2023: Towards Correct and Reliable Data-centric Systems (hosted by Mohammad Mousavi and Alastair Donaldson)
-
University College London 2023: Towards Correct and Reliable Data-centric Systems (hosted by Sergey Mechtaev)
-
Imperial College London 2023: Automatically Finding Performance Issues in Compilers and Databases (hosted by Cristian Cadar)
Teaching at NUS (all)
-
AY2023/2024 Semester 1: CS6223 "Advanced Topics in Software Testing" (Lecturer)
-
AY2022/2023 Semester 1: CS6218 "Ensuring the Correctness and Reliability of Data-Centric Systems" (Lecturer)
(Co-)supervised Theses
ETH Zurich Students
Master
-
Matteo Kamm: Testing Graph Databases using Predicate Partitioning
[GitHub]
-
Philippe Voinov: A Practical Structural Code Editor
[GitHub]
[Website]
-
Bernhard Kellermann: Finding Missed Optimizations in Query Optimizers of Relational Databases
[LinkedIn]
-
Juan Díaz Sada: Using Real-world Projects to Extract and Utilize SQL Test Cases
[GitHub]
[LinkedIn]
-
Jack Clark: Verifying Serializability Protocols With Version Order Recovery
[LinkedIn]
[GitHub]
-
Patrick Stäuble: Automatically Finding Logic Bugs in Document-Oriented Database Systems
[GitHub]
-
Dylan Wolff: Value Mutation Testing for SMT Solvers
[Website]
[Twitter]
[LinkedIn]
-
Hannes Pfammatter: Investigating the Effects of Unsafe Compiler Optimizations for Numerical Code
-
Lilian Boesch: Automatically Testing GraalVM
Bachelor
-
Tim Matter: Utilizing SMT Solvers for Database System Testing
-
Bachmann Jules: Detecting Correctness Regression Bugs in DBMS
-
Jonas Müntener: A Reduction Tool for SQL
[GitHub]
-
Attila Hirschi: Using Solvers to Provide Actionable Feedback to Developers for SQL Queries
[GitHub]
-
Andrin Bertschi: A PHP Implementation Built on GraalVM
[GitHub]
[Website]
[Twitter]
-
Antonio Russo: Incorporating Machine-level Coverage Information in Coverage-guided Fuzzing
Johannes Kepler University Linz Students
Master
-
Daniel Pekarek: A Truffle-based Interpreter for x86 Binary Code
-
Raphael Mosaner: On-stack Replacement in Truffle Interpreters for Non-structured Languages
[GitHub]
[paper]
[Twitter]
-
Josef Haider: An ECMAScript 2015-Compliant Automata-based Regular Expression Engine for Graal.js
-
Jacob Kreindl: Source-Level Debugging Support for an LLVM-IR Interpreter
[paper]
[website]
[Twitter]
Bachelor
-
Thomas Pointhuber: The Cicro Benchmarking Suite
[GitHub]
[website]
-
Florian Aufreiter: A Random Test Case Generator for Java Bytecode
[GitHub]
-
Sebastian Kloibhofer: A Class File Reducer for Debugging Java-Bytecode-Based Tools
[GitHub]
-
Daniel Pekarek: Implementing Inline Assembly Support for Sulong
-
Mario Kahlhofer: A Bytecode Interpreter for Lambdas and Streams in Java
[Twitter]
- 2025: ICSE
- 2024: ICSE, ICSE DS
- 2022: ESEC/FSE 🏆, ASPLOS, ICSE 🏆, ECOOP, MoreVMs, MET
- 2021: VLDB (Demonstration Track), DBPL
- 2020: POPL (Artifact Evaluation Committee), ASPLOS (External Review Committee Member), MPLR, DLS, MoreVMs
Recent and Upcoming Talks (all)
-
Sentosa Software Technology Summit - Advanced Foundational Software and Systems 2023: Automatic Testing of Database Systems (hosted by Huawei)
-
Data Engineering Meetup Singapore
2023: Testing Database Systems with SQLancer
-
TAROT Summer School 2023: Towards Correct and Reliable Data-centric Systems (hosted by Mohammad Mousavi and Alastair Donaldson)
-
University College London 2023: Towards Correct and Reliable Data-centric Systems (hosted by Sergey Mechtaev)
-
Imperial College London 2023: Automatically Finding Performance Issues in Compilers and Databases (hosted by Cristian Cadar)
Teaching at NUS (all)
- AY2023/2024 Semester 1: CS6223 "Advanced Topics in Software Testing" (Lecturer)
- AY2022/2023 Semester 1: CS6218 "Ensuring the Correctness and Reliability of Data-Centric Systems" (Lecturer)
(Co-)supervised Theses
ETH Zurich Students
Master
-
Matteo Kamm: Testing Graph Databases using Predicate Partitioning
[GitHub]
-
Philippe Voinov: A Practical Structural Code Editor
[GitHub]
[Website]
-
Bernhard Kellermann: Finding Missed Optimizations in Query Optimizers of Relational Databases
[LinkedIn]
-
Juan Díaz Sada: Using Real-world Projects to Extract and Utilize SQL Test Cases
[GitHub]
[LinkedIn]
-
Jack Clark: Verifying Serializability Protocols With Version Order Recovery
[LinkedIn]
[GitHub]
-
Patrick Stäuble: Automatically Finding Logic Bugs in Document-Oriented Database Systems
[GitHub]
-
Dylan Wolff: Value Mutation Testing for SMT Solvers
[Website]
[Twitter]
[LinkedIn]
-
Hannes Pfammatter: Investigating the Effects of Unsafe Compiler Optimizations for Numerical Code
-
Lilian Boesch: Automatically Testing GraalVM
Bachelor
-
Tim Matter: Utilizing SMT Solvers for Database System Testing
-
Bachmann Jules: Detecting Correctness Regression Bugs in DBMS
-
Jonas Müntener: A Reduction Tool for SQL
[GitHub]
-
Attila Hirschi: Using Solvers to Provide Actionable Feedback to Developers for SQL Queries
[GitHub]
-
Andrin Bertschi: A PHP Implementation Built on GraalVM
[GitHub]
[Website]
[Twitter]
-
Antonio Russo: Incorporating Machine-level Coverage Information in Coverage-guided Fuzzing
Johannes Kepler University Linz Students
Master
-
Daniel Pekarek: A Truffle-based Interpreter for x86 Binary Code
-
Raphael Mosaner: On-stack Replacement in Truffle Interpreters for Non-structured Languages
[GitHub]
[paper]
[Twitter]
-
Josef Haider: An ECMAScript 2015-Compliant Automata-based Regular Expression Engine for Graal.js
-
Jacob Kreindl: Source-Level Debugging Support for an LLVM-IR Interpreter
[paper]
[website]
[Twitter]
Bachelor
-
Thomas Pointhuber: The Cicro Benchmarking Suite
[GitHub]
[website]
-
Florian Aufreiter: A Random Test Case Generator for Java Bytecode
[GitHub]
-
Sebastian Kloibhofer: A Class File Reducer for Debugging Java-Bytecode-Based Tools
[GitHub]
-
Daniel Pekarek: Implementing Inline Assembly Support for Sulong
-
Mario Kahlhofer: A Bytecode Interpreter for Lambdas and Streams in Java
[Twitter]
-
Matteo Kamm: Testing Graph Databases using Predicate Partitioning
[GitHub] -
Philippe Voinov: A Practical Structural Code Editor
[GitHub] [Website] -
Bernhard Kellermann: Finding Missed Optimizations in Query Optimizers of Relational Databases
[LinkedIn] -
Juan Díaz Sada: Using Real-world Projects to Extract and Utilize SQL Test Cases
[GitHub] [LinkedIn] -
Jack Clark: Verifying Serializability Protocols With Version Order Recovery
[LinkedIn] [GitHub] -
Patrick Stäuble: Automatically Finding Logic Bugs in Document-Oriented Database Systems
[GitHub] -
Dylan Wolff: Value Mutation Testing for SMT Solvers
[Website] [Twitter] [LinkedIn] - Hannes Pfammatter: Investigating the Effects of Unsafe Compiler Optimizations for Numerical Code
- Lilian Boesch: Automatically Testing GraalVM
Bachelor
-
Tim Matter: Utilizing SMT Solvers for Database System Testing
-
Bachmann Jules: Detecting Correctness Regression Bugs in DBMS
-
Jonas Müntener: A Reduction Tool for SQL
[GitHub]
-
Attila Hirschi: Using Solvers to Provide Actionable Feedback to Developers for SQL Queries
[GitHub]
-
Andrin Bertschi: A PHP Implementation Built on GraalVM
[GitHub]
[Website]
[Twitter]
-
Antonio Russo: Incorporating Machine-level Coverage Information in Coverage-guided Fuzzing
Johannes Kepler University Linz Students
Master
-
Daniel Pekarek: A Truffle-based Interpreter for x86 Binary Code
-
Raphael Mosaner: On-stack Replacement in Truffle Interpreters for Non-structured Languages
[GitHub]
[paper]
[Twitter]
-
Josef Haider: An ECMAScript 2015-Compliant Automata-based Regular Expression Engine for Graal.js
-
Jacob Kreindl: Source-Level Debugging Support for an LLVM-IR Interpreter
[paper]
[website]
[Twitter]
Bachelor
-
Thomas Pointhuber: The Cicro Benchmarking Suite
[GitHub]
[website]
-
Florian Aufreiter: A Random Test Case Generator for Java Bytecode
[GitHub]
-
Sebastian Kloibhofer: A Class File Reducer for Debugging Java-Bytecode-Based Tools
[GitHub]
-
Daniel Pekarek: Implementing Inline Assembly Support for Sulong
-
Mario Kahlhofer: A Bytecode Interpreter for Lambdas and Streams in Java
[Twitter]
- Tim Matter: Utilizing SMT Solvers for Database System Testing
- Bachmann Jules: Detecting Correctness Regression Bugs in DBMS
-
Jonas Müntener: A Reduction Tool for SQL
[GitHub] -
Attila Hirschi: Using Solvers to Provide Actionable Feedback to Developers for SQL Queries
[GitHub] -
Andrin Bertschi: A PHP Implementation Built on GraalVM
[GitHub] [Website] [Twitter] - Antonio Russo: Incorporating Machine-level Coverage Information in Coverage-guided Fuzzing
Johannes Kepler University Linz Students
Master
-
Daniel Pekarek: A Truffle-based Interpreter for x86 Binary Code
-
Raphael Mosaner: On-stack Replacement in Truffle Interpreters for Non-structured Languages
[GitHub]
[paper]
[Twitter]
-
Josef Haider: An ECMAScript 2015-Compliant Automata-based Regular Expression Engine for Graal.js
-
Jacob Kreindl: Source-Level Debugging Support for an LLVM-IR Interpreter
[paper]
[website]
[Twitter]
Bachelor
-
Thomas Pointhuber: The Cicro Benchmarking Suite
[GitHub]
[website]
-
Florian Aufreiter: A Random Test Case Generator for Java Bytecode
[GitHub]
-
Sebastian Kloibhofer: A Class File Reducer for Debugging Java-Bytecode-Based Tools
[GitHub]
-
Daniel Pekarek: Implementing Inline Assembly Support for Sulong
-
Mario Kahlhofer: A Bytecode Interpreter for Lambdas and Streams in Java
[Twitter]
- Daniel Pekarek: A Truffle-based Interpreter for x86 Binary Code
-
Raphael Mosaner: On-stack Replacement in Truffle Interpreters for Non-structured Languages
[GitHub] [paper] [Twitter] - Josef Haider: An ECMAScript 2015-Compliant Automata-based Regular Expression Engine for Graal.js
-
Jacob Kreindl: Source-Level Debugging Support for an LLVM-IR Interpreter
[paper] [website] [Twitter]
Bachelor
-
Thomas Pointhuber: The Cicro Benchmarking Suite
[GitHub]
[website]
-
Florian Aufreiter: A Random Test Case Generator for Java Bytecode
[GitHub]
-
Sebastian Kloibhofer: A Class File Reducer for Debugging Java-Bytecode-Based Tools
[GitHub]
-
Daniel Pekarek: Implementing Inline Assembly Support for Sulong
-
Mario Kahlhofer: A Bytecode Interpreter for Lambdas and Streams in Java
[Twitter]
-
Thomas Pointhuber: The Cicro Benchmarking Suite
[GitHub] [website] -
Florian Aufreiter: A Random Test Case Generator for Java Bytecode
[GitHub] -
Sebastian Kloibhofer: A Class File Reducer for Debugging Java-Bytecode-Based Tools
[GitHub] - Daniel Pekarek: Implementing Inline Assembly Support for Sulong
-
Mario Kahlhofer: A Bytecode Interpreter for Lambdas and Streams in Java
[Twitter]