Greg Stark's Development Projects
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.
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.
I want to rewrite this to clean things up and iron out the race conditions with cancel requests.
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.
Hash joins using bitmap index scans
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.