Lu cette semaine :
- Problème relatif au niveau d'isolation des transactions :
- L'article résumant le problème : http://jepsen.io/analyses/postgresq...
- Fil de discussion sur la liste pgsql-bugs : https://www.postgresql.org/message-...
- Correction du bug : https://git.postgresql.org/gitweb/?...
- Pour un peu de contexte : A Critique of ANSI SQL Isolation Levels
- et Generalized Isolation Level Definitions
- Un thread twitter : https://twitter.com/felixge/status/... sur la lecture de Looking Back at Postgres(pdf)
- Understanding user management in PgBouncer
- SQL trickery: Hypothetical aggregates
Pour mieux comprendre le fonctionnement de rank() WITHIN GROUP()
, en complément de ce dernier article, je vous propose la requête suivante :
select key ~ '^[aeiou]$' as is_vowel , array_agg(key) , rank('f') within group (order by key) from ( values ('a'),('b'),('c'),('d'),('e'),('f'),('g') ) as chars( key ) group by key ~ '^[aeiou]$' ; is_vowel | array_agg | rank ----------+-------------+------ f | {d,b,c,f,g} | 4 t | {a,e} | 3 (2 rows)
Ou la valeur donnée par rank()
est le rang de la valeur passée en argument de la fonction, dans la liste obtenue visible dans l'agrégat array_agg()
. Cet exemple permet de distinguer les données manipulées du rang obtenu, quel que soit l'intérêt réel de la requête.
À venir dans PostgreSQL 13 :
- PostgreSQL 13 beta2 publiée le 25 juin : https://www.postgresql.org/message-...
- Repartitioning with logical replication in PostgreSQL 13
Agenda :
- Pgconf.eu a lieu du 20 au 23 octobre à Berlin : l'appel à orateur est publié : https://2020.pgconf.eu/call-for-pap...