Craig Ringer

Senior Staff SDE

Craig Ringer is a Senior Staff SDE based out of Wellington in New Zealand. He was one of the early developers of the 2ndQuadrant BDR distributed multi-master replication software that later became EnterpriseDB Postgres Distributed. He is a recognised PostgreSQL contributor with contributions including libpq pipelining mode, logical replication improvements, and data protection fixes (reporting "FSyncgate").

 Craig's work touches many wildly varied areas, but he is currently focused on observability in Kubernetes-based cloud environments using technology including OpenTelemetry, Prometheus and Thanos. He enjoys solving complex problems that cross many layers and components. Contributing improvements, fixes, documentation and test cover to upstream projects are personal priorities, as he believes that it's important for companies to give back to open source projects. When not at a laptop, Craig enjoys building remote control aircraft, hiking, and visiting Wellington's beautiful beaches.

Read Blogs

Technical Blog
In the next week I will be writing a series of posts about the row-security work I’ve been doing for PostgreSQL 9.4 as part of the EU’s AXLE project. I will be outlining the history, approaches tried, current status, remaining issues, and future work required. To open the series, I’d like to talk about what row security is good for and why you might want it. The purpose of the row-security feature...
Technical Blog
Streaming replication slots are a pending feature in PostgreSQL 9.4, as part of the logical changeset extraction feature. What are they for, what do you need to know, what changes? What are replication slots? Streaming replication slots are a new facility introduced in PostgreSQL 9.4. They are a persistent record of the state of a replica that is kept on the master server even when the replica is...
Technical Blog
I’ve seen a number of users struggling with building PostgreSQL extensions under Visual Studio, so I thought I’d see what’s involved in getting it working. The result is this tutorial, showing how to compile a simple extension with Visual Studio 2010 Express Edition. Requirements You will need a supported version of Visual Studio installed. These instructions refer to Visual Studio 2010 Express...
Technical Blog
I’m delving into the PostgreSQL parser, query rewriter and query planner at the moment, as part of work on row-level security for the AXLE project. As I’ve noticed that there’s some great documentation on the overall structure and flow but not much on some of the details I thought I’d start posting about some of the more confusing corners. If you’re not interested in the PostgreSQL source code and...
Technical Blog
You might have seen the support added for security_barrier views in PostgreSQL 9.2. I’ve been looking into that code with an eye to adding automatic update support for them as part of progressing row-level security work for the AXLE project, and I thought I’d take the chance to explain how they work. Robert already explained why they’re useful and what they protect against. (It turns out it’s also...
Technical Blog
The profiling utility perf that ships with the Linux kernel is extremely useful for examining system-wide and multi-process behaviour – but it does a lot more than the CPU profiling it’s often used for. You’ve probably looked at perf top -az or perf top -u postgres output, but that’s only the littlest bit of what it can do. (If you want the TL/DR version, jump down to “User space dynamic probes”)...
Technical Blog
People are often hesitant to test out a new PostgreSQL release because they’re concerned it’ll break their current working installation. This is a perfectly valid concern, but it’s easily resolved with a few simple protective measures: Build PostgreSQL from source as an unprivileged user Install your PostgreSQL build within that user’s home directory Run PostgreSQL as that user, not postgres Run...
Technical Blog
(This article is written with reference to PostgreSQL 9.3. If you’re using a newer version please check to make sure any limitations described remain in place.) PostgreSQL offers several tools for searching and pattern matching text. The challenge is choosing which to use for a job. There’s: LIKE and ILIKE SQL pattern matching; ~ and ~* operators for mostly-perl-compatible regular expressions...
Technical Blog
As interest in PostgreSQL grows, so does the rate at which new patches are proposed. To maintain the high level of quality in PostgreSQL it is important that all patches be checked and reviewed, so that what gets added to the codebase is good quality. Some of this evaluation requires a lot of expertise in the PostgreSQL core code, but most of it requires little development experience at all. The...
Technical Blog
Cygwin users, If you use PostgreSQL on Cygwin, please try out this build fix, verifying that it works on Cygwin, and that it doesn’t break the Linux/BSD builds or the MinGW Windows builds. Your help would be appreciated in ensuring that Cygwin remains a supported platform into the future.