GSoC 2024

From PostgreSQL wiki
Jump to navigationJump to search
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/