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
Con el lanzamiento de PostgreSQL 13, realizado el día de ayer, quizás sea un buen momento para hablar de cuándo y cómo debería implementarse la nueva versión de la base de datos. A menudo escuchamos preguntas como "¿Cuándo debería actualizar?" y "¿Debería cambiar mi plan de nueva implementación a la nueva versión?" Lo primero que hay que considerar es esto: no debería implementar ningún software...
Technical Blog
With the release yesterday of PostgreSQL 13, now is perhaps a good time to talk about when and how it should be deployed. We often get questions at such times like "When should I upgrade?" and "Should I switch my new planned deployment to the new release?" The first thing to consider is this: you shouldn’t deploy any software you haven’t tested with. So unless you have been testing your app...
Technical Blog
Let’s say you have two PostgreSQL servers that connect to each other using postgres_fdw. They communicate over TLS and they use client certificates to authenticate. You have a Certificate Authority you have set up, and it has issued server and client certificates for each server. On server one you have server1.crt, server1.key, client1.crt, client1.key and root.crt. On server two you have similar...
Technical Blog
Daniel Gustafsson has done some terrific work on using NSS as an alternative TLS library to OpenSSL for PostgreSQL. I’ve done some work making that build and run on Windows. Daniel recently asked how to get a working NSS on Windows to use for development, and this blog is about that process. First you need to start with a clean Windows environment. The simplest way is a new virtual machine...
Technical Blog
Let’s say you have an application that has a huge table and that needs to be available all the time. It’s got so big that managing it without partitioning it is getting increasingly difficult. But you can’t take the table offline to create a new partitioned version of the table, which would take a great deal of time since this is a huge table. Here is a recipe for dealing with the problem. It won...
Technical Blog
Recently there were some complaints about the behaviour of the jsonb_set function. Specifically, the complain was that if the value argument of the function is null the result is null. This happens because the function is declared STRICT, like many PostgreSQL functions. STRICT is in fact another way of spelling RETURNS NULL ON NULL INPUT. There are numerous advantages to having functions with this...
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...