Andrew Dunstan
Andrew Dunstan is a Senior Principal Engineer at EDB. He has been contributing to the PostgreSQL project for more than 20 years, and for most of that time has been one of the project's core committers.
Among the features he has contributed to are the Windows port, CSV import and export, parallel pg_restore, and the JSON and JSONB data types and associated functions. In 2004 he created the PostgreSQL Build Farm, which he still maintains.
Andrew joined 2ndQuadrant in 2016 and EDB in 2020 when it acquired 2ndQuadrant.
Read Blogs
Technical Blog
Release 11 of the PostgreSQL Buildfarm client is now available. The release includes numerous bug fixes plus following features: Allow a list of branches as positional arguments to run_branches.pl This overrides what is found in the config file. The list can’t include metabranches like ALL, nor can it contain regexes. improve diagnostic capture for git and fetching branches of interest unify...
Technical Blog
If you’ve visited almost any web page on the PostgreSQL Build Farm server in the last few days you might have noticed that it is sporting a new RSS feed, of changes in status. This is similar to the information on the buildfarm-status-green-chgs mailing list, except that it has all status changes, not just to and from green. This new feature fulfills a long outstanding request.
Technical Blog
Announcing Release 10 of the PostgreSQL Buildfarm client Principal feature: support for non-standard repositories: support multi-element branch names, such as “dev/featurename” or “bug/ticket_number/branchname” provide a get_branches() method in SCM module support regular expression branches of interest. This is matched against the list of available branches prune branches when doing git fetch...
Technical Blog
This is something people seem to get confused about quite often. A root.crt file is used to validate a TLS (a.k.a. SSL) certificate presented by the other end of a connection. It is usually the public certificate of the Certificate Authority (CA) that signed the presented certificate, and is used to validate that signature. If a non-root CA was used to sign the other end’s TLS certificate, the...
Technical Blog
Announcing Release 9 of the PostgreSQL Buildfarm client. Along with numerous fixes of minor bugs and a couple of not so minor bugs, this release has the following features: new command line parameter --run-parallel for run_branches.pl runs all branches in parallel, possibly across animals as well new config setting max_load_avg inhibits a run if the load average is higher than the setting new...
Technical Blog
In PostgreSQL version 10 or less, if you add a new column to a table without specifying a default value then no change is made to the actual values stored. Any existing row will just fill in a NULL for that column. But if you specify a default value, the entire table gets rewritten with the default value filled in on every row. That rewriting behavior changes in PostgreSQL 11. In a new feature I...
Technical Blog
Postgres contains a moving event horizon, which is in effect about 2 billion transactions ahead of or behind the current transaction id. Transactions up to 2 billion ahead of or more than 2 billion behind the current transaction id are considered to be in the future, and will thus be invisible to current transactions. Postgres avoids this catastrophic data loss by specially marking old rows so...
Technical Blog
The video of my presentation below walks you through the major features of the native JSON data type in PostgreSQL 9.3 and beyond. https://www.youtube.com/watch?v=BtFes871CN0 This presentation covers the following topics: What is JSON? How is it available in PostgreSQL? What’s the difference between JSON and JSONB? Accessing JSON values Creating JSON from table data Creating table data from JSON...
Technical Blog
Recently I have been refining and adding utilities to look after our Perl code. You might be surprised to learn that as well as 1.3 million or so lines of C code, there are about 30,000 lines of Perl code in our sources. This a sizeable body of code, even if it’s dwarfed by our C code. What does it do? Well, lots of things. It runs some very critical code in building from source, so the code to...
Technical Blog
If you have Docker installed on your development machine, there is a simple way to road test your code using the buildfarm client, in a nicely contained environment. These preparatory steps only need to be done once. First clone the repository that has the required container definitions: git clone http://github.com/PGBuildFarm/Dockerfiles.git bf-docker Then build a container image to run the...