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
=== References ===
[1] https://github.com/cybertec-postgresql/pgwatch3/
[2] https://demo.pgwatch.com/
Category:Google Summer of Code