PostgreSQL 🐘 est sans conteste ma base de données préférée ! J’apprends constamment de nouvelles astuces et pièges, alors j’ai décidé d’en faire le sujet d’un nouveau quiz !
Ce quiz mélange des fonctionnalités PostgreSQL bien connues et des subtilités moins répandues : agrégats intégrés, cast de types, contraintes, et bien plus encore.
Quelle est l’affirmation la plus précise concernant timestamptz et timestamp ?
Ils occupent tous deux 8 octets, mais représentent des valeurs différentes.
timestamptz représente un instant absolu. PostgreSQL tient compte du paramètre TimeZone lors de l’analyse d’une entrée sans décalage explicite et lors de l’affichage. Il ne conserve ni le nom ni le décalage du fuseau d’origine.
timestamp stocke une date et une heure sans conversion de fuseau : il représente une heure locale dont le contexte doit être fourni séparément.
Des types à donner le vertige
Vous avez sûrement utilisé énormément de types PostgreSQL, n’est-ce pas ?
Les prochaines questions concernent les types natifs de PostgreSQL 17. 🤯
Pour chaque question, repérez le seul type invalide. 🕵️♂️
Lequel de ceux‑ci n’est pas ❌ un type PostgreSQL valide ?
Il peut sembler familier car decimal128 est un type dans de nombreux environnements (y compris Mongo et Java). Ce n’est pas un type PostgreSQL valide, c’est decimal qui l’est.
Lequel de ceux‑ci n’est pas ❌ un type PostgreSQL valide ?
Cela vous a-t-il frustré, voire en colère ? Vous n’êtes pas seul ! Pour citer un contributeur « core » anonyme de la base de données, « what the hell, Dan?! I crashed on the type questions! Thats violent sir! Not sharing my score, hah. » 😈 De rien.
L’ensemble riche de types réseau de PostgreSQL n’inclut pas ipv4. Chaque fois que j’essaie de l’utiliser sans chercher, je me trompe. Peut‑être que macaddr8 me fait penser qu’il doit exister les types ipv4 et ipv6. Non, inet couvre les deux. De plus, cidr couvre les masques réseau pour les deux.
Lequel de ceux‑ci n’est pas ❌ un type PostgreSQL valide ?
PostgreSQL possède un ensemble riche de types spécialisés, mais triangle n’en fait pas partie.
Cette question porte sur les types géométriques intégrés à PostgreSQL. Les extensions comme PostGIS disposent de leurs propres fonctionnalités géométriques ; cela ne fait pas de triangle un type intégré à PostgreSQL.
Parmi ces valeurs, laquelle contient le moins de chiffres décimaux tout en dépassant la précision maximale de six décimales des timestamps PostgreSQL ?
Les timestamps PostgreSQL ont une précision microseconde (6 décimales).
Maximum : .123456 (6 chiffres)
Les nanosecondes (9 chiffres) sont arrondies ou tronquées à la précision prise en charge
Les décalages de fuseau horaire sont acceptés pour timestamptz, mais ne sont pas obligatoires
Astuce peu courante : Certaines langues/cadres envoient une précision en nanosecondes, mais PostgreSQL stocke les timestamps avec une précision microseconde.