GSoC 2024
This page is for collecting ideas for Google Summer of Code 2024 projects. This page is for IDEAS ONLY.
IF YOU ARE A CONTRIBUTOR: there is a top-level GSoC page for PostgreSQL here: PostgreSQL General GSoC Page - please read this first before proceeding to contact mentors! Contribution guidelines, channels and communication methods are in this page too. PLEASE make sure you have read everything thoroughly.
If you are a mentor and would like to participate, feel free to edit this page and put your name below.
Mentors mailing list for proposals: gsoc2024-mentors@lists.postgresql.org
Proposals
Proposals are still work in progress. If you are a mentor and would like to participate, feel free to edit this page and put your name below.
Admins
- Jesper Pedersen
- Pavlo Golub
Mentors
The following individuals have been listed as possible mentors on the below projects, and/or offered to be mentors for student-proposed projects:
- Pavlo Golub
- Dave Cramer
- Mark Wong
- Luca Ferrari
- Haoran Zhang
- Jesper Pedersen
PostgreSQL JDBC Struct/Array Support
Project Description
The JDBC API has:
Struct createStruct(String typeName, Object[] attributes) throws SQLException
Factory method for creating Struct objects. Parameters: typeName - the SQL type name of the SQL structured type that this Struct object maps to. The typeName is the name of a user-defined type that has been defined for this database. It is the value returned by Struct.getSQLTypeName. attributes - the attributes that populate the returned object
Currently pgjdbc does not support this. The goal would be to implement the function
Skills needed
- JAVA
- JDBC
- PostgreSQL
Difficulty level
Moderately hard, depending on proficiency with JAVA coding.
Project size
175 hours
Mentors
- Dave Cramer can mentor. Dave is a major contributor, has experience writing JAVA and JDBC.
- Mark Wong
Expected outcomes
- Working implementation of createStruct
pgagroal: I/O layer
Project Description
Replace the existing I/O layer (libev based) with an in-place high-performance one.
This will require writing a layer that abstracts epoll, io_uring, ... but keeping it at a minimum.
Skills needed
- C
- Linux / *BSD
Difficulty level
Hard
Project size
350 hours
Mentors
- Luca Ferrari (fluca1978 at gmail dot com)
- Jesper Pedersen (jesper dot pedersen at comcast dot net)
Reach out for feedback
References
[1] https://github.com/agroal/pgagroal/
[2] https://man7.org/linux/man-pages/man7/epoll.7.html
[3] https://man.archlinux.org/man/io_uring.7.en
pgmoneta: WAL infrastructure
Project Description
Implement an infrastructure for handling WAL records such that they can be applied on a case-by-case basis.
Skills needed
- C
- PostgreSQL
Difficulty level
Hard
Project size
350 hours
Mentors
- Jesper Pedersen (jesper dot pedersen at comcast dot net)
- Haoran Zhang (andrewzhr9911 at gmail dot com)
Reach out for feedback
References
[1] https://github.com/pgmoneta/pgmoneta
[2] https://www.postgresql.org/docs/current/wal-internals.html
pgmoneta: Extended functionality
Project Description
Create a PostgreSQL extension for pgmoneta that can help with backup additional files from the server, and getting necessary information needed for backups.
Skills needed
- C
- PostgreSQL
Difficulty level
Medium
Project size
350 hours
Mentors
- Haoran Zhang (andrewzhr9911 at gmail dot com)
- Jesper Pedersen (jesper dot pedersen at comcast dot net)
Reach out for feedback
References
[1] https://github.com/pgmoneta/pgmoneta
[2] https://www.postgresql.org/docs/current/extend-extensions.html
RPC Sinks for PgWatch3
Project Description
This project aims to provide support for remote sinks in pgwatch3. Currently pgwatch3 allows users to write measurements to ‘sinks’. However there can be a specific use cases where the users might want to utilize sinks that are not hosted on the same system, or sinks that provide some sort of extra functionality. To tackle this we can have a RPC based sink writer. This will help a lot in achieving the current decoupling goals of the project.
Skills needed
- Go
Difficulty level
High
Project size
350 hours
Mentors
- Pavlo Golub
- Mark Wong