Room: Ballroom C
Full day training on modifying the PostgreSQL code base, including both server and client side modifications, from interacting with the community through to having your feature be included.
A VM will be provided which attendees should download ahead of the training. This VM will include the appropriate tools for developing with PostgreSQL.
Specifically, we will cover:
Basics of the source management tool 'git': downloading the PostgreSQL source code, reviewing the commit log, updating the repository based on commits done by PostgreSQL committers, using branches, and tracking feature work against the PostgreSQL code.
Introduction to PostgreSQL source code: the directory structure, where to find the client applications, the server side code, extensions, and the documentation.
Overall PostgreSQL Architecture: How a query goes through the entire system from the command-line interface psql, through the C library which speaks the PostgreSQL protocol, across the wire with the PostgreSQL protocol, and the server-side reception of that query, and then parsing, planning, execution, including how data makes it from the user to the filesystem and how query results are returned to the user.
With this basis for working with PostgreSQL, we will then move on to discuss new feature development.
Interacting with the PostgreSQL community through the mailing lists used by all of the active PostgreSQL developers and committers.
Using a branch in git to commit code to, including how to write commit messages and how the PostgreSQL project expects to see new patches. This will involve hand-on modification of the PostgreSQL code, building with these changes and using your new feature.
How to use the PostgreSQL "commitfest" application to register your new feature patch to be reviewed by other developers. We will walk through the states which a given patch goes through from submission via the commitfest application to eventual commit to the PostgreSQL repository.
Prerequisites: Knowledge of C and at least one one Vim, Emacs, Jed or other Linux-based text editor.