Read Blogs
Technical Blog
One of the headlining features of PostgreSQL 18 is virtual generated columns, which I worked on. This is the story of that feature. Just to catch everyone up, this is what a virtual generated column is: CREATE TABLE t1 (a int, b int GENERATED ALWAYS AS (a * 2)); Here is a less abstract example: CREATE TABLE products ( id int PRIMARY KEY, title varchar, price numeric, tax numeric GENERATED ALWAYS...
EDB Labs
One of the exciting new features in PostgreSQL 16 is the ability to group digits in numeric literals by separating them with underscores. This blog post covers the details.
Each database contains a schema named public by default. This schema is also by default part of the search_path. The effect is that if you don't specify any schema in any commands, all the activities take place in this public schema.
Technical Blog
La semana pasada fue lanzado PostgreSQL 13. Como desarrollador de PostgreSQL, en estas ocasiones, tengo la costumbre de seguir las noticias y las redes sociales para ver qué opina el público sobre la nueva versión y qué características son las más comentadas. Las novedades siempre causan sorpresa. Lo que en especial me llamó la atención este año fue que gran parte de las discusiones no parecían...
Technical Blog
PostgreSQL 13 was released last week. As a PostgreSQL developer, of course I monitor the news and social media on days like this to see what the public thinks about our release and maybe which features get discussed most. The latter is always surprising. What I noticed particularly this year was that most of the discussion appeared to be not so much about the features and the technology direction...
Technical Blog
Since PgBouncer runs as a single process, it is not straightforward to make use of multiple CPUs on a host. When you are running on real hardware, this is wasteful, since single-CPU server machines don’t exist anymore, as far as I can tell. When using virtualization, you could just provision a single CPU per virtual host and run multiple virtual hosts with a single PgBouncer instance each. But...
Technical Blog
Unicode equivalence Unicode is a complicated beast. One of its numerous peculiar features is that different sequences of codepoints can be equal. This is not the case in legacy encodings. In LATIN1, for instance, the only thing that is equal to ‘a’ is ‘a’ and the only thing that is equal to ‘ä’ is ‘ä’. In Unicode, however, characters with diacritic marks can often (depending on the particular...
Technical Blog
PgBouncer is a popular connection proxy and pooler for PostgreSQL. As PgBouncer presents a PostgreSQL protocol interface to client applications, it also handles client authentication. For that, it maintains its own directory of users and passwords. That is sometimes a source of confusion, so in this blog post I want to try to describe how this works. auth_file There are several ways in which users...
Technical Blog
Let’s say you want to implement a password authentication method in a client/server protocol. How would you do that and what would be the possible problems? The following is the story of how this was done in PostgreSQL. password In the beginning, PostgreSQL only had the method that is now known as "password" in pg_hba.conf. It is the simplest thing you can imagine: The client says to the server,...
Technical Blog
Let’s wrap this up. In part 1 of this blog series, I explained the different Windows build targets supported by PostgreSQL. In part 2, I showed how to test patches for Windows compatibility and how to easily spin up a Windows environment for testing and simple development. Now, in this third and final part, we’ll do what good programmers do: We’ll automate it. There are a number of services out...