Reading time: 8 minutes
PostgreSQL is the World’s most advanced Open Source Relational Database. The interview series “PostgreSQL Person of the Week” presents the people who make the project what it is today. Read all interviews here.
Please tell us about yourself, and where you are from.
I’m from St. Gallen, Switzerland. I love working with Java and SQL.
How do you spend your free time? What are your hobbies?
“Free time??” I have small kids 😅. But I like video games and cooking. I used to like travelling, but that’s a memory from a distant past, with kids, COVID, etc.
Any Social Media channels of yours we should be aware of?
I’m producing tons of content on these channels, mostly:
Last book you read? Or a book you want to recommend to readers?
Sapiens: A Brief History of Humankind.
It didn’t reveal anything fundamentally new about history, but put things into a fresh perspective. A teaser: What if humans didn’t domesticate wheat but wheat domesticated humans?
Any favorite movie, or show?
I really enjoyed The Witcher, having loved the video games as well.
What does your ideal weekend look like?
These days, I’m just happy if I get enough sleep 😅
What’s still on your bucket list?
Writing a bucket list
What is the best advice you ever got?
To turn jOOQ into a business. Open source is great, but living off sustainable open source is even better. Running my own business has been an absolute pleasure both professionally and for my private life.
When did you start using PostgreSQL, and why?
I’m making jOOQ, which supports ~30 RDBMS, and PostgreSQL obviously was one of the first dialects for jOOQ to support, in about 2009, I think.
These days, I’m using both H2 and PostgreSQL a lot to get insight into highly standards compliant implementations. I like PostgreSQL specifically, because it has such a high potential of becoming “the Linux of databases”. The extension system is a killer feature. There are so many useful data types, and they’re integrated so well into SQL (specifically PostGIS).
Do you remember which version of PostgreSQL you started with?
Have you studied at a university? If yes, was it related to computers? Did your study help you with your current job?
Yes, at École Polytechnique Fédérale de Lausanne (EPFL) and 1 year at École Polytechnique de Montréal (EPM). I have a MSc in CS, so yes, it’s related to computers. The EPM year was really useful for all my jobs given its focus on engineering. The EPFL studies a bit less so, as the focus on computer science is much less frequently useful in everyday work. Though today, making jOOQ, I’m still very glad I did it, given that now I can use all my theoretic background as well.
What other databases are you using? Which one is your favorite?
I’m “using” (i.e. supporting, via jOOQ): Access, BigQuery, CockroachDB, Db2, Derby, Exasol, Firebird, H2, HANA, HSQLDB, Ignite, Informix, MariaDB, MySQL, Oracle, PostgreSQL, Redshift, SingleStore, Snowflake, SQL Server, SQLite, Sybase ASE, Sybase SQL Anywhere, Teradata, Vertica, YugabyteDB.
PostgreSQL and Oracle are my favourite. PostgreSQL for its feature set and “developer friendliness.” The power of PostgreSQL really shows also when using jOOQ. A lot of jOOQ users use jOOQ with PostgreSQL, as jOOQ enables all the advanced PG features for Java developers.
I also used to love Oracle for its production power. Back in the days, before doing only jOOQ, I loved to tune 500-line-execution plan Oracle SQL query monsters in production. Today, regrettably, I’m hardly doing that kind of work anymore.
On which PostgreSQL-related projects are you currently working?
How do you contribute to PostgreSQL?
By helping Java developers work with advanced PostgreSQL features with ease.
An increasing number of people use jOOQ not as a Java “ORM,” but via the SQL translation feature, which drastically simplifies migrating vendor specific SQL between vendors. Usage statistics indicate that there’s a strong shift towards PostgreSQL from other SQL dialects.
Any contributions to PostgreSQL which do not involve writing code?
As mentioned before, I used to be an “Oracle guy” given my previous work. But these days, I usually use PostgreSQL in all blog posts, tweets, examples, demos, etc. I have quite some reach, so I guess that helps with adoption.
I used to tour Java conferences a lot, talk about SQL in general, promoting its use (as opposed to e.g. NoSQL technologies).
What is your favorite PostgreSQL extension?
PostGIS. It’s a vast standard (ISO/IEC 13249-3) implemented completely as an extension, proving how powerful the PostgreSQL extension system is.
What is the most annoying PostgreSQL thing you can think of? And any chance to fix it?
It used to be the lack of MERGE support, but that’s now fixed. Other than that, PostgreSQL hardly ever annoys me. Perhaps the existing JSON APIs, see below, but that’s complaining on a high level.
What is the feature you like most in the latest PostgreSQL version?
MERGE. It’s probably SQL’s most powerful statement, unlocking a variety of DML operations that wouldn’t be possible with the PostgreSQL specific ON CONFLICT clause.
Adding to that, what feature/mechanism would you like to see in PostgreSQL? And why?
- MATCH_RECOGNIZE is just plain awesome. A really useful addition to the standard by Oracle. Advanced Oracle users tend to love it a lot.
- Standard JSON support will be very nice as I think the syntax is quite lean. While PostgreSQL has been an early innovator with respect to putting JSON into the RDBMS world, the PostgreSQL JSON APIs are a bit of a mess, to be honest. I can hardly ever remember any function without looking up the docs. Every function has a subtly different style, so adopting the standard will definitely help.
- Hints. I know this is a very heated topic, but as a former Oracle guy, I don’t really understand why there are no hints. Hints are a wonderful way to study and debug the optimiser. Rarely also to tweak the generated plan (mostly, the optimiser is right). I mean, there is a hint. WITH .. AS [ NOT ] MATERIALIZED. So, given the precedent has been made, why not add more!
- Execution plan caching. This is another very heated topic, I know, and again as a former Oracle guy, I guess I’d miss this in a PG production environment. Such a cache enables much more complex querying and optimisation, because more time can be spent on optimising knowing that the work won’t be repeated (as much). It’s a slippery slope, because it has its own caveats, but I remember this as a net benefit in Oracle.
- A public issue tracker.
Could you describe your PostgreSQL development toolbox?
Docker and Testcontainers for the dev and test runtimes, Dbeaver as a SQL editor, and I’m making jOOQ, which is a tool that Java developers use to integrate with PostgreSQL.
Which skills are a must have for a PostgreSQL developer/user?
SQL. Can’t have enough SQL skills!
Which PostgreSQL conferences do you visit? Do you submit talks?
Only the Swiss PGDay. I mostly used to visit Java conferences and talk there a lot about SQL. I’ve talked at the Swiss PGDay, once. I might do that again, or at other not-too-far PG conferences, e.g. in Paris, but it’s challenging with the little kids.
Do you think PostgreSQL has a high entry barrier?
Not at all. It’s super easy to install, almost always follows the SQL standard, extending it where convenient, doesn’t suffer from any “clever” quirks and footguns like some other RDBMS. I think it’s the perfect RDBMS for SQL beginners.
What is your advice for people who want to start PostgreSQL developing - as in, contributing to the project. Where and how should they start?
People can’t talk enough about PostgreSQL. That’s really the best way to start. Other than that, everyone tends to scratch their own itches, which makes PostgreSQL such a great community. With the extension system, everyone can implement whatever and test its usefulness by the community.
I’m not involved enough with the PG development itself to comment on how to get involved there. Core contributions are certainly useful, but those who are qualified will know how to do it, so I guess they won’t need much help getting started. What can’t be stressed enough with open source contributions is helping with adoption. There’s no “PostgreSQL company” that spends billions on marketing. So “marketing” by the community is really the easiest way to contribute.
Do you think PostgreSQL will be here for many years in the future?
Yes, it will eventually replace MySQL as the most popular open source database product, and maybe even Oracle as well? The db-engines ranking suggests I’m right.
Would you recommend PostgreSQL for business, or for side projects?
Side projects: Always. Business: It depends on the workload. PostgreSQL can do a lot and very well. I would recommend it as the default choice, if requirements aren’t complex. When it comes to heavy load from complex queries, I think Oracle is still unbeaten (see my previous point about execution plan caching as an example). I think that will continue to change as PostgreSQL is getting better and better, but in business, there are a lot of non-functional requirements to consider, including the availability of skilled DBA, which is something that the PostgreSQL community still needs to improve, as well.
What other places do you hang out?
Which other Open Source projects are you involved or interested in?
Testing (i.e. I have reported a ton of bugs to): derby, h2, hsqldb, jaybird, sqlite-jdbc, mysql, mariadb, Eclipse
I wish I had more time: OpenJDK