Postgres

On the Road Again

Things always start in an unassuming way, don’t they? Having recently returned from a short paternity leave, the Tembo CTO wanted a short meeting last Friday morning, and I assumed it was so he could catch up with our projects. Instead, he informed me that the company was changing direction, and my services would no longer be necessary. I knew the company was beginning a sharp pivot, but was hoping my project would survive the tumult.

Building Blocks and Stepping Stones

Last week I attended Postgres Conference Seattle 2024 as a speaker for two sessions. The first, titled “What’s our Vector, Victor?” discussed the merits of the pg_vectorize extension for Postgres. The second, titled “Kubernetes Killed the High Availability Star” served an advocacy piece for the ultimate deprecation of Postgres High Availability tooling in general. On day two of the event, I ended up having a long conversation about system architecture with Harry Pierson from DBOS.

PG Phriday: My Postgres is Rusty

Postgres and Rust go together like peanut butter and chocolate, or ice-cream and root beer, or Batman and Robin, or mice and cheese, or sand on a beach, or crabs and elephants! Err, maybe scratch that last one.

Hmmmmm…

Hmmmmm…

Well regardless, there’s a whole lot of Rust going on in the Postgres world these days, especially thanks to contributions from the PGRX project. As a relative novice to Rust, I figured it was time to see what all the fuss was about and tentatively dip a foot into those turbulent and unforgiving waters.

PG Phriday: Taking Postgres for GRANTed

Not every database-backed application needs to be locked down like Fort Knox. Sometimes there are even roles that leverage blanket access to large swathes of available data, if not every table, simply for auditing or monitoring purposes. Normally this would require quite a bit of preparation or ongoing privilege management, but Postgres came up with a unique solution starting with version 14: predefined roles. This topic comes up relatively frequently in Postgres chats like Discord, Slack, and IRC.

PG Phriday: On the Move

Sometimes when we have an existing database and schema full of tables, there comes a time when we need to perform a migration. Maybe it’s because we want to move to or from a cloud service. Perhaps we have a small database and want to do a quick version upgrade via dump / restore. Whatever the reason, we may decide to clean up some technical debt while we’re making the transition.

Many Postgres experts recommend against creating objects in the public schema. This is the default schema that exists in nearly all Postgres databases, and there are often implicit grants that could make our objects available in unexpected scenarios. It’s also a cluttered namespace if all tables, views, functions, etc., are created there by default. Using it is sloppy and makes future data or operation segregation much more difficult.

So how can we move a bunch of existing stuff out of the public schema safely?