Greg Stark's Development Projects

From PostgreSQL wiki
Jump to navigationJump to search

This page lists the projects and ideas I'm working on.

Non-recursive WITH / recursive WITH

Preread blocks using posix_fadvise

The main issue is whether we want to rejigger to buffer manager to allocated buffers to preread pages. This effectively would use the buffer manager to cache pages which have already been preread. It also would possibly open the door to using async i/o to preread pages directly into the buffer manager instead of into the filesystem cache.

Hans-Juergen Schoenig & Zoltan Boszormenyi have also done additional work on the use of posix_fadvise.

Discussion

Chart of results

Ordered append executor node (merge-append)

This is a new executor node to handle appending multiple partitions taking the next record from the partition with the earliest order key. If every input partition is already in the desired order this will guarantee that the output is still in that order. This is important for partitioning since it allows us to use some plan types such as merge joins which are currently unavailable if you partition your tables.

Concurrent psql

I want to rewrite this to clean things up and iron out the race conditions with cancel requests.

Discussion

EXPLAIN queries in progress

This is a proof-of-concept patch with a few different goals. We want to:

  • allow the user to get EXPLAIN ANALYZE info for queries taking too long to run to completion.
  • allow the user to get an idea what percentage of their query has run and what stage of the query is currently executing.
  • allow applications like pgadmin or apache to pull out the progress info and report it graphically through whatever interface is appropriate.

Discussion

Hash joins using bitmap index scans

http://archives.postgresql.org/pgsql-hackers/2007-12/msg00507.php

Column-wise data compression

A type of dictionary based compression, in which duplicate values in a column may be stored in an external dictionary table, similar to the way that TOAST tables work.