From 4906e30e3596d737efce07dabc6e28859f320b0f Mon Sep 17 00:00:00 2001 From: Guillaume Lelarge Date: Thu, 4 Jun 2020 15:50:40 +0200 Subject: [PATCH] =?UTF-8?q?Merge=20v13,=20premi=C3=A8re=20partie?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Il manque les quatre fichiers ayant subi le plus de modifications. --- postgresql/acronyms.xml | 2 +- postgresql/adminpack.xml | 109 +- postgresql/amcheck.xml | 27 +- postgresql/auto-explain.xml | 20 + postgresql/backup-manifest.xml | 217 + postgresql/biblio.xml | 6 +- postgresql/bki.xml | 4 +- postgresql/btree-gin.xml | 6 + postgresql/btree-gist.xml | 6 + postgresql/btree.xml | 704 +- postgresql/charset.xml | 1373 +++- postgresql/citext.xml | 21 +- postgresql/color.xml | 102 + postgresql/config.xml | 580 +- postgresql/contrib.xml | 31 +- postgresql/cube.xml | 618 +- postgresql/datatype.xml | 304 +- postgresql/datetime.xml | 6 +- postgresql/dblink.xml | 1 - postgresql/ddl.xml | 46 +- postgresql/dict-int.xml | 17 +- postgresql/docguide.xml | 13 +- postgresql/earthdistance.xml | 227 +- postgresql/ecpg.xml | 48 +- postgresql/errcodes.xml | 4 +- postgresql/event-trigger.xml | 228 +- postgresql/extend.xml | 267 +- postgresql/features.xml | 31 +- postgresql/file-fdw.xml | 5 +- postgresql/filelist.xml | 5 +- postgresql/fuzzystrmatch.xml | 6 + postgresql/geqo.xml | 55 +- postgresql/gist.xml | 1 + postgresql/glossary.xml | 1870 +++++ postgresql/high-availability.xml | 147 +- postgresql/hstore.xml | 994 ++- postgresql/indexam.xml | 4 + postgresql/indices.xml | 6 +- postgresql/install-windows.xml | 3 +- postgresql/installation.xml | 1164 +-- postgresql/intarray.xml | 529 +- postgresql/isn.xml | 90 +- postgresql/json.xml | 49 +- postgresql/legal.xml | 6 +- postgresql/libpq.xml | 1489 ++-- postgresql/lo.xml | 6 + postgresql/lobj.xml | 144 +- postgresql/logical-replication.xml | 25 +- postgresql/logicaldecoding.xml | 9 +- postgresql/ltree.xml | 767 +- postgresql/maintenance.xml | 38 +- postgresql/manage-ag.xml | 4 +- postgresql/mvcc.xml | 54 +- postgresql/oid2name.xml | 7 + postgresql/pageinspect.xml | 164 +- postgresql/perform.xml | 93 +- postgresql/pgbuffercache.xml | 109 +- postgresql/pgcrypto.xml | 9 +- postgresql/pgstatstatements.xml | 534 +- postgresql/pgtrgm.xml | 440 +- postgresql/planstats.xml | 2 +- postgresql/plperl.xml | 46 +- postgresql/plpgsql.xml | 48 +- postgresql/plpython.xml | 28 +- postgresql/pltcl.xml | 2 +- postgresql/postgres-fdw.xml | 45 +- postgresql/postgres.xml | 15 +- postgresql/protocol.xml | 42 +- postgresql/queries.xml | 6 +- postgresql/ref/allfiles.xml | 1 + postgresql/ref/alter_collation.xml | 18 +- postgresql/ref/alter_function.xml | 10 +- postgresql/ref/alter_index.xml | 9 +- postgresql/ref/alter_materialized_view.xml | 11 +- postgresql/ref/alter_opfamily.xml | 2 +- postgresql/ref/alter_statistics.xml | 17 + postgresql/ref/alter_table.xml | 72 +- postgresql/ref/alter_tablespace.xml | 10 +- postgresql/ref/alter_trigger.xml | 7 +- postgresql/ref/alter_type.xml | 151 +- postgresql/ref/alter_view.xml | 21 +- postgresql/ref/clusterdb.xml | 2 +- postgresql/ref/commit_prepared.xml | 2 +- postgresql/ref/create_aggregate.xml | 7 +- postgresql/ref/create_conversion.xml | 21 +- postgresql/ref/create_database.xml | 28 +- postgresql/ref/create_extension.xml | 60 +- postgresql/ref/create_foreign_table.xml | 2 +- postgresql/ref/create_index.xml | 103 +- postgresql/ref/create_language.xml | 124 +- postgresql/ref/create_materialized_view.xml | 8 +- postgresql/ref/create_opclass.xml | 23 +- postgresql/ref/create_publication.xml | 37 +- postgresql/ref/create_table.xml | 69 +- postgresql/ref/create_tablespace.xml | 25 +- postgresql/ref/create_trigger.xml | 14 +- postgresql/ref/create_type.xml | 12 - postgresql/ref/create_view.xml | 4 +- postgresql/ref/declare.xml | 4 +- postgresql/ref/delete.xml | 3 +- postgresql/ref/do.xml | 2 +- postgresql/ref/drop_database.xml | 43 +- postgresql/ref/dropdb.xml | 12 + postgresql/ref/explain.xml | 14 + postgresql/ref/insert.xml | 39 +- postgresql/ref/listen.xml | 29 +- postgresql/ref/lock.xml | 2 +- postgresql/ref/notify.xml | 4 +- postgresql/ref/pg_basebackup.xml | 102 +- postgresql/ref/pg_dump.xml | 41 +- postgresql/ref/pg_dumpall.xml | 2 +- postgresql/ref/pg_rewind.xml | 157 +- postgresql/ref/pg_verifybackup.xml | 292 + postgresql/ref/pg_waldump.xml | 12 + postgresql/ref/pgbench.xml | 980 ++- postgresql/ref/pgupgrade.xml | 15 +- postgresql/ref/postgres-ref.xml | 7 +- postgresql/ref/postmaster.xml | 2 +- postgresql/ref/prepare.xml | 4 +- postgresql/ref/prepare_transaction.xml | 2 +- postgresql/ref/psql-ref.xml | 341 +- postgresql/ref/reindex.xml | 14 +- postgresql/ref/reindexdb.xml | 25 +- postgresql/ref/rollback_prepared.xml | 4 +- postgresql/ref/select.xml | 129 +- postgresql/ref/update.xml | 9 +- postgresql/ref/vacuum.xml | 62 +- postgresql/ref/vacuumdb.xml | 20 +- postgresql/ref/values.xml | 8 +- postgresql/reference.xml | 1 + postgresql/regress.xml | 9 - postgresql/release-12.xml | 7965 ------------------- postgresql/release-13.xml | 3034 +++++++ postgresql/release.xml | 15 +- postgresql/rules.xml | 3 +- postgresql/runtime.xml | 6 +- postgresql/seg.xml | 140 +- postgresql/sepgsql.xml | 115 +- postgresql/spgist.xml | 1 + postgresql/spi.xml | 39 +- postgresql/storage.xml | 4 +- postgresql/syntax.xml | 122 +- postgresql/tablefunc.xml | 166 +- postgresql/tcn.xml | 6 + postgresql/textsearch.xml | 48 +- postgresql/trigger.xml | 29 +- postgresql/tsm-system-rows.xml | 6 + postgresql/tsm-system-time.xml | 6 + postgresql/unaccent.xml | 6 + postgresql/user-manag.xml | 2 + postgresql/uuid-ossp.xml | 198 +- postgresql/vacuumlo.xml | 7 + postgresql/version.xml | 4 +- postgresql/xfunc.xml | 106 +- postgresql/xindex.xml | 34 +- postgresql/xml2.xml | 262 +- postgresql/xoper.xml | 13 + postgresql/xplang.xml | 2 +- 158 files changed, 15984 insertions(+), 13693 deletions(-) create mode 100644 postgresql/backup-manifest.xml create mode 100644 postgresql/color.xml create mode 100644 postgresql/glossary.xml create mode 100644 postgresql/ref/pg_verifybackup.xml delete mode 100644 postgresql/release-12.xml create mode 100644 postgresql/release-13.xml diff --git a/postgresql/acronyms.xml b/postgresql/acronyms.xml index c9689f885..6149766bf 100644 --- a/postgresql/acronyms.xml +++ b/postgresql/acronyms.xml @@ -766,7 +766,7 @@ UTF - Unicode Transformation + Unicode Transformation Format diff --git a/postgresql/adminpack.xml b/postgresql/adminpack.xml index 2ee323c84..3c60499cb 100644 --- a/postgresql/adminpack.xml +++ b/postgresql/adminpack.xml @@ -29,42 +29,69 @@ Fonctions de <filename>adminpack</filename> - - - Nom Type en retour Description - - + + + + + Fonction + + + Description + + + - - - pg_catalog.pg_file_write(filename text, data text, append boolean) - bigint - - Écrit dans un fichier - - - - pg_catalog.pg_file_rename(oldname text, newname text , archivename text) - boolean - - Renomme un fichier - - - - pg_catalog.pg_file_unlink(filename text) - boolean - - Supprime un fichier - - - - pg_catalog.pg_logdir_ls() - setof record - - Liste les fichiers de trace du répertoire précisé par log_directory - - - + + + + pg_catalog.pg_file_write ( filename text, data text, append boolean ) + bigint + + + Écrit dans un fichier + + + + + + pg_catalog.pg_file_sync ( filename text ) + void + + + Vide un fichier ou un répertoire sur disque. + + + + + + pg_catalog.pg_file_rename ( oldname text, newname text , archivename text ) + boolean + + + Renomme un fichier + + + + + + pg_catalog.pg_file_unlink ( filename text ) + boolean + + + Supprime un fichier. + + + + + + pg_catalog.pg_logdir_ls () + setof record + + + Liste les fichiers de trace du répertoire précisé par log_directory. + + +
@@ -80,6 +107,18 @@ seront ajoutées. Renvoit le nombre d'octets écrits. + + pg_file_sync + + + pg_file_sync synchronise sur disque le fichier ou le + répertoire indiqué d'après son filename. Une erreur + est renvoyée en cas d'échec (par exemple si le fichier indiqué n'est pas + présent). Notez que n'a pas d'effet + sur cette fonction, et de ce fait, une erreur de niveau PANIC ne sera pas + renvoyée même en cas d'échec pour synchroniser les fichiers de la base. + + pg_file_rename diff --git a/postgresql/amcheck.xml b/postgresql/amcheck.xml index e415bc66b..a03800471 100644 --- a/postgresql/amcheck.xml +++ b/postgresql/amcheck.xml @@ -130,8 +130,7 @@ ORDER BY c.relpages DESC LIMIT 10; B-Tree, respecte un certain nombre de propriétés invariantes. En option, quand l'argument heapallindexed vaut true, la fonction vérifie la présence de toutes les - lignes dans la table, et la présence de tous les liens dans la structure - de l'index. Quand l'argument optionel rootdescend + lignes dans la table. Quand l'argument optionel rootdescend vaut true, la vérification recherche de nouveau les lignes au niveau des feuilles en réalisant une nouvelle recherche à partir de la racine pour chaque ligne. Les vérifications réalisables par @@ -141,7 +140,8 @@ ORDER BY c.relpages DESC LIMIT 10; plus minutieuse de bt_index_check : contrairement à bt_index_check, bt_index_parent_check vérifie également les - propriétés invariantes qui englobent les relations parent/enfant. + propriétés invariantes qui englobent les relations parent/enfant, et la + présence de tous les liens dans la structure de l'index. bt_index_parent_check respecte la convention habituelle qui consiste à retourner une erreur si une incohérence ou tout autre problème est détecté. @@ -174,6 +174,27 @@ ORDER BY c.relpages DESC LIMIT 10; + + + + bt_index_check and + bt_index_parent_check both output log + messages about the verification process at + DEBUG1 and DEBUG2 severity + levels. These messages provide detailed information about the + verification process that may be of interest to + PostgreSQL developers. Advanced users + may also find this information helpful, since it provides + additional context should verification actually detect an + inconsistency. Running: + +SET client_min_messages = DEBUG1; + + in an interactive psql session before + running a verification query will display messages about the + progress of verification with a manageable level of detail. + + diff --git a/postgresql/auto-explain.xml b/postgresql/auto-explain.xml index d69e67749..707afee9a 100644 --- a/postgresql/auto-explain.xml +++ b/postgresql/auto-explain.xml @@ -113,6 +113,26 @@ + + + auto_explain.log_wal (boolean) + + auto_explain.log_wal configuration parameter + + + + + auto_explain.log_wal controls whether WAL + usage statistics are printed when an execution plan is logged; it's + equivalent to the WAL option of EXPLAIN. + This parameter has no effect + unless auto_explain.log_analyze is enabled. + This parameter is off by default. + Only superusers can change this setting. + + + + auto_explain.log_timing (boolean) diff --git a/postgresql/backup-manifest.xml b/postgresql/backup-manifest.xml new file mode 100644 index 000000000..9f23a151c --- /dev/null +++ b/postgresql/backup-manifest.xml @@ -0,0 +1,217 @@ + + + + + Backup Manifest Format + + + Backup Manifest + + + + The backup manifest generated by is + primarily intended to permit the backup to be verified using + . However, it is + also possible for other tools to read the backup manifest file and use + the information contained therein for their own purposes. To that end, + this chapter describes the format of the backup manifest file. + + + + A backup manifest is a JSON document encoded as UTF-8. (Although in + general JSON documents are required to be Unicode, PostgreSQL permits + the json and jsonb data types to be used with any + supported server encoding. There is no similar exception for backup + manifests.) The JSON document is always an object; the keys that are present + in this object are described in the next section. + + + + Backup Manifest Toplevel Object + + + The backup manifest JSON document contains the following keys. + + + + + PostgreSQL-Backup-Manifest-Version + + + The associated value is always the integer 1. + + + + + + Files + + + The associated value is always a list of objects, each describing one + file that is present in the backup. No entries are present in this + list for the WAL files that are needed in order to use the backup, + or for the backup manifest itself. The structure of each object in the + list is described in . + + + + + + WAL-Ranges + + + The associated value is always a list of objects, each describing a + range of WAL records that must be readable from a particular timeline + in order to make use of the backup. The structure of these objects is + further described in . + + + + + + Manifest-Checksum + + + This key is always present on the last line of the backup manifest file. + The associated value is a SHA256 checksum of all the preceding lines. + We use a fixed checksum method here to make it possible for clients + to do incremental parsing of the manifest. While a SHA256 checksum + is significantly more expensive than a CRC32C checksum, the manifest + should normally be small enough that the extra computation won't matter + very much. + + + + + + + + Backup Manifest File Object + + + The object which describes a single file contains either a + Path key or an Encoded-Path key. + Normally, the Path key will be present. The + associated string value is the path of the file relative to the root + of the backup directory. Files located in a user-defined tablespace + will have paths whose first two components are pg_tblspc and the OID + of the tablespace. If the path is not a string that is legal in UTF-8, + or if the user requests that encoded paths be used for all files, then + the Encoded-Path key will be present instead. This + stores the same data, but it is encoded as a string of hexadecimal + digits. Each pair of hexadecimal digits in the string represents a + single octet. + + + + The following two keys are always present: + + + + + Size + + + The expected size of this file, as an integer. + + + + + + Last-Modified + + + The last modification time of the file as reported by the server at + the time of the backup. Unlike the other fields stored in the backup, + this field is not used by . + It is included only for informational purposes. + + + + + + + If the backup was taken with file checksums enabled, the following + keys will be present: + + + + + Checksum-Algorithm + + + The checksum algorithm used to compute a checksum for this file. + Currently, this will be the same for every file in the backup + manifest, but this may change in future releases. At present, the + supported checksum algorithms are CRC32C, + SHA224, + SHA256, + SHA384, and + SHA512. + + + + + + Checksum + + + The checksum computed for this file, stored as a series of + hexadecimal characters, two for each byte of the checksum. + + + + + + + + Backup Manifest WAL Range Object + + + The object which describes a WAL range always has three keys: + + + + + Timeline + + + The timeline for this range of WAL records, as an integer. + + + + + + Start-LSN + + + The LSN at which replay must begin on the indicated timeline in order to + make use of this backup. The LSN is stored in the format normally used + by PostgreSQL; that is, it is a string + consisting of two strings of hexadecimal characters, each with a length + of between 1 and 8, separated by a slash. + + + + + + End-LSN + + + The earliest LSN at which replay on the indicated timeline may end when + making use of this backup. This is stored in the same format as + Start-LSN. + + + + + + + Ordinarily, there will be only a single WAL range. However, if a backup is + taken from a standby which switches timelines during the backup due to an + upstream promotion, it is possible for multiple ranges to be present, each + with a different timeline. There will never be multiple WAL ranges present + for the same timeline. + + + diff --git a/postgresql/biblio.xml b/postgresql/biblio.xml index dd097bf0e..ff6ac30df 100644 --- a/postgresql/biblio.xml +++ b/postgresql/biblio.xml @@ -311,7 +311,7 @@ ssimkovi@ag.or.at Eleventh International Conference on Data Engineering - 6-10 mars 1995 + 6–10 mars 1995
Taipeh, Taiwan
Cat. No.95CH35724 @@ -320,7 +320,7 @@ ssimkovi@ag.or.at
Los Alamitos, Californie
1995 - 420-7 + 420–7 @@ -423,7 +423,7 @@ ssimkovi@ag.or.at SIGMOD Record 18(4) Décembre 1989 - 4-11 + 4–11 diff --git a/postgresql/bki.xml b/postgresql/bki.xml index 83ea6f10d..6533d34b5 100644 --- a/postgresql/bki.xml +++ b/postgresql/bki.xml @@ -404,8 +404,8 @@ Pour trouver un OID disponible pour une nouvelle ligne préchargée, exécutez le script src/include/catalog/unused_oids. Il affiche l'intervalle inclusif d'OID inutilisés (par exemple, la ligne en sortie - 45-900 signifie que les OID 45 jusqu'à 900 n'ont pas encore - été alloués). Pour le moment, les OID 1-9999 sont réservés pour des + 45-900 signifie que les OID 45 jusqu'à 900 n'ont pas encore + été alloués). Pour le moment, les OID 1–9999 sont réservés pour des allocations manuelles ; le script unused_oids regarde simplement dans les en-têtes de catalogue et les fichiers .dat pour voir lesquels n'apparaissent pas. Vous diff --git a/postgresql/btree-gin.xml b/postgresql/btree-gin.xml index dc4b00dd0..c1a592f2d 100644 --- a/postgresql/btree-gin.xml +++ b/postgresql/btree-gin.xml @@ -32,6 +32,12 @@ qui devront être combinés par une opération de bitmap ET. + + This module is considered trusted, that is, it can be + installed by non-superusers who have CREATE privilege + on the current database. + + Exemple d'utilisation diff --git a/postgresql/btree-gist.xml b/postgresql/btree-gist.xml index 30886e483..50f82b575 100644 --- a/postgresql/btree-gist.xml +++ b/postgresql/btree-gist.xml @@ -54,6 +54,12 @@ oid et money. + + This module is considered trusted, that is, it can be + installed by non-superusers who have CREATE privilege + on the current database. + + Exemple d'utilisation diff --git a/postgresql/btree.xml b/postgresql/btree.xml index 99170ec51..8837047f9 100644 --- a/postgresql/btree.xml +++ b/postgresql/btree.xml @@ -220,241 +220,557 @@ Comme montré dans , btree définit - une fonction de support obligatoire et deux facultatives. + une fonction de support obligatoire et trois facultatives. Les quatre + méthodes définies par l'utilisateur sont : - - Pour chaque combinaison de types de données pour laquelle une famille - d'opérateur btree fournit des opérateurs de comparaison, elle doit fournir une - fonction de support de comparaison inscrite dans - pg_amproc avec la fonction de support 1 et - amproclefttype/amprocrighttype - égaux aux types de données gauche et droit pour la comparaison (c'est-à-dire - les même types de données que l'opérateur correspondant a inscrit dans - pg_amop). - La fonction de comparaison doit prendre en entrée deux valeurs non nulles - A et B et retourner une - valeur int32 qui est - < 0, 0, - ou > 0 - quand, respectivement A < - B, A - = B, - ou A > - B. Une valeur de retour NULL est également - interdite : toutes les valeurs du type de données doivent être - comparables. Voir - src/backend/access/nbtree/nbtcompare.c pour plus - d'exemples. - - - - Si les valeurs comparées sont d'un type avec collation, l'identifiant de - collation approprié sera passé à la fonction de support de comparaison, en - utilisant le mécanisme standard PG_GET_COLLATION(). - + + + order + + + Pour chaque combinaison de types de données pour laquelle une famille + d'opérateur btree fournit des opérateurs de comparaison, elle doit fournir une + fonction de support de comparaison inscrite dans + pg_amproc avec la fonction de support 1 et + amproclefttype/amprocrighttype + égaux aux types de données gauche et droit pour la comparaison (c'est-à-dire + les même types de données que l'opérateur correspondant a inscrit dans + pg_amop). + La fonction de comparaison doit prendre en entrée deux valeurs non nulles + A et B et retourner une + valeur int32 qui est + < 0, 0, + ou > 0 + quand, respectivement A < + B, A + = B, + ou A > + B. Une valeur de retour NULL est également + interdite : toutes les valeurs du type de données doivent être + comparables. Voir + src/backend/access/nbtree/nbtcompare.c pour plus + d'exemples. + - - De manière facultative, une famille d'opérateur btree peut fournir une ou - plusieurs fonctions sort support, inscrites comme - fonctions de support numéro 2. Ces fonctions permettent d'implémenter des - comparaisons dans l'optique de tri de manière plus efficace qu'appeler - naivement la fonction de support de comparaison. Les API impliquées pour - cela sont définies dans src/include/utils/sortsupport.h. - + + Si les valeurs comparées sont d'un type avec collation, l'identifiant de + collation approprié sera passé à la fonction de support de comparaison, en + utilisant le mécanisme standard PG_GET_COLLATION(). + + + - - fonctions de support in_range - + + sortsupport + + + De manière facultative, une famille d'opérateur btree peut fournir une ou + plusieurs fonctions sort support, inscrites comme + fonctions de support numéro 2. Ces fonctions permettent d'implémenter des + comparaisons dans l'optique de tri de manière plus efficace qu'appeler + naivement la fonction de support de comparaison. Les API impliquées pour + cela sont définies dans src/include/utils/sortsupport.h. + + + - - fonctions de support - in_range - + + inrange + + + fonctions de support in_range + + + fonctions de support + in_range + - - De manière facultative, une famille d'opérateur btree peut fournir une ou - plusieurs fonctions de support in_range inscrites comme - fonction de support numéro 3. Celles-ci ne sont pas utilisées durant les - opérations d'index btree ; mais plutôt, elles étendent les sémantiques de la - famille d'opérateur de telle manière qu'elles puissent supporter les clauses de - fenêtrage contenant les types de limite de cadre - RANGE décalage - PRECEDING - et RANGE décalage - FOLLOWING (voir - ). Fondamentalement, les - informations supplémentaires fournies sont comment additionner et soustraire - une valeur d'un décalage d'une manière qui est - compatible avec le tri de données de la famille. - + + De manière facultative, une famille d'opérateur btree peut fournir une ou + plusieurs fonctions de support in_range inscrites comme + fonction de support numéro 3. Celles-ci ne sont pas utilisées durant les + opérations d'index btree ; mais plutôt, elles étendent les sémantiques de la + famille d'opérateur de telle manière qu'elles puissent supporter les clauses de + fenêtrage contenant les types de limite de cadre + RANGE décalage + PRECEDING + et RANGE décalage + FOLLOWING (voir + ). Fondamentalement, les + informations supplémentaires fournies sont comment additionner et soustraire + une valeur d'un décalage d'une manière qui est + compatible avec le tri de données de la famille. + - - Une fonction in_range doit avoir la signature + + Une fonction in_range doit avoir la signature in_range(val type1, base type1, offset type2, sub bool, less bool) returns bool - val et base doivent - être du même type, qui est un des types supportés par la famille d'opérateur - (c'est-à-dire un type pour lequel elle fournit un tri). Cependant, - offset peut être d'un type de données différent, - qui peut par ailleurs ne pas être supporté par la famille. Un exemple est - que la famille time_ops incluse par défaut fournit une - fonction in_range qui a un - offset de type interval. - Une famille peut fournir des fonctions in_range pour - n'importe lesquels des types de données qu'elle supporte, et un ou plusieurs types - offset. Chaque fonction - in_range devrait être inscrite dans - pg_amproc - avec amproclefttype égal à type1 - et amprocrighttype égal à type2. - + val et base doivent + être du même type, qui est un des types supportés par la famille d'opérateur + (c'est-à-dire un type pour lequel elle fournit un tri). Cependant, + offset peut être d'un type de données différent, + qui peut par ailleurs ne pas être supporté par la famille. Un exemple est + que la famille time_ops incluse par défaut fournit une + fonction in_range qui a un + offset de type interval. + Une famille peut fournir des fonctions in_range pour + n'importe lesquels des types de données qu'elle supporte, et un ou plusieurs types + offset. Chaque fonction + in_range devrait être inscrite dans + pg_amproc + avec amproclefttype égal à type1 + et amprocrighttype égal à type2. + - - Les sémantiques essentielles pour une fonction in_range - dépendent des deux paramètres de drapeau booléens. Elle devrait ajouter ou - soustraire base et - offset, puis comparer - val au résultat, comme ceci : - - - si !sub et - !less, - renvoyer val >= - (base + - offset) + Les sémantiques essentielles pour une fonction in_range + dépendent des deux paramètres de drapeau booléens. Elle devrait ajouter ou + soustraire base et + offset, puis comparer + val au résultat, comme ceci : + + + + si !sub et + !less, + renvoyer val >= + (base + + offset) + + + + + si !sub + et less, + renvoyer val <= + (base + + offset) + + + + + si sub + et !less, + renvoyer val >= + (base - + offset) + + + + + si sub et less, + renvoyer val <= + (base - + offset) + + + + Avant de procéder, la fonction devrait vérifier le signe d' + offset : s'il est inférieur à zéro, lever l'erreur + ERRCODE_INVALID_PRECEDING_OR_FOLLOWING_SIZE (22013) + avec un message d'erreur tel que taille précédente ou suivante invalide + dans la fonction de fenêtrage. (Cela est requis par le standard SQL, + bien que des familles d'opérateur non standards pourraient peut être choisir + d'ignorer cette restriction, puisqu'il n'y a pas vraiment de nécessité de + sémantique dans ce cas.) Cette exigence est déléguée à la fonction + in_range si bien que le code du moteur n'a pas besoin de + comprendre ce que inférieur à zéro signifie pour un type de + données particulier. - - + - si !sub - et less, - renvoyer val <= - (base + - offset) + Une autre attente est que les fonctions in_range + devraient, si applicable, éviter de générer une erreur si + base + + offset + ou base - + offset devait causer un débordement. + Le résultat de comparaison correct peut être déterminé même si cette valeur + devait être en dehors de l'intervalle des valeurs du type de données. + Notez que si le type de données inclut des concepts tels que + infinity ou NaN, des précautions supplémentaires + pourraient être nécessaires pour s'assurer que les resultats de + in_range soient en accord avec l'ordre de tri normal de la + famille d'opérateur. - - + - si sub - et !less, - renvoyer val >= - (base - - offset) + Les résultats de la fonction in_range doivent être + cohérents avec l'ordre de tri imposé par la famille d'opérateur. Pour être + précis, pour n'importe quelles valeurs fixées de + offset et sub, alors : + + + + Si in_range avec less = + true est vrai pour certains val1 + et base, il doit être vrai pour chaque + val2 <= + val1 avec le même + base. + + + + + Si in_range avec less = + true est faux pour certains val1 + et base, il doit être faux pour chaque + val2 >= + val1 avec le même + base. + + + + + Si in_range avec less = + true est vrai pour certains val + et base1, il doit être vrai pour chaque + base2 >= + base1 avec le même + val. + + + + + Si in_range avec less = + true est faux pour certains val + et base1, il doit être faux pour chaque + base2 <= + base1 avec le même + val. + + + + Des déclarations similaires avec des conditions inversées continuent à + s'appliquer quand less = false. - - + - si sub et less, - renvoyer val <= - (base - - offset) + Si le type est trié (type1) par rapport à une collation, l'OID de collation + approprié sera passé à la fonction in_range en utilisant + le mécanisme standard PG_GET_COLLATION(). - - - Avant de procéder, la fonction devrait vérifier le signe d' - offset : s'il est inférieur ou égal à zéro, lever l'erreur - ERRCODE_INVALID_PRECEDING_OR_FOLLOWING_SIZE (22013) - avec un message d'erreur tel que taille précédente ou suivante invalide - dans la fonction de fenêtrage. (Cela est requis par le standard SQL, - bien que des familles d'opérateur non standards pourraient peut être choisir - d'ignorer cette restriction, puisqu'il n'y a pas vraiment de nécessité de - sémantique dans ce cas.) Cette exigence est déléguée à la fonction - in_range si bien que le code du moteur n'a pas besoin de - comprendre ce que inférieur à zéro signifie pour un type de - données particulier. - - - Une autre attente est que les fonctions in_range - devraient, si applicable, éviter de générer une erreur si - base + - offset - ou base - - offset devait causer un débordement. - Le résultat de comparaison correct peut être déterminé même si cette valeur - devait être en dehors de l'intervalle des valeurs du type de données. - Notez que si le type de données inclut des concepts tels que - infinity ou NaN, des précautions supplémentaires - pourraient être nécessaires pour s'assurer que les resultats de - in_range soit en accord avec l'ordre de tri normal de la - famille d'opérateur. - - - - Les résultats de la fonction in_range doivent être - cohérents avec l'ordre de tri imposé par la famille d'opérateur. Pour être - précis, pour n'importe quelles valeurs fixées de - offset et sub, alors : - - - Si in_range avec less = - true est vrai pour certains val1 - et base, il doit être vrai pour chaque - val2 <= - val1 avec le même - base. + Les fonctions in_range n'ont pas besoin de gérer les + valeurs en entrée NULL, et typiquement elles seront marquées comme strict. + + + + equalimage - Si in_range avec less = - true est faux pour certains val1 - et base, il doit être faux pour chaque - val2 >= - val1 avec le même - base. + Optionally, a btree operator family may provide + equalimage (equality implies image + equality) support functions, registered under support + function number 4. These functions allow the core code to + determine when it is safe to apply the btree deduplication + optimization. Currently, equalimage + functions are only called when building or rebuilding an index. - - + - Si in_range avec less = - true est vrai pour certains val - et base1, il doit être vrai pour chaque - base2 >= - base1 avec le même - val. + An equalimage function must have the + signature + +equalimage(opcintype oid) returns bool + + The return value is static information about an operator class + and collation. Returning true indicates that + the order function for the operator class is + guaranteed to only return 0 (arguments + are equal) when its A and + B arguments are also interchangeable + without any loss of semantic information. Not registering an + equalimage function or returning + false indicates that this condition cannot be + assumed to hold. - - + - Si in_range avec less = - true est faux pour certains val - et base1, il doit être faux pour chaque - base2 <= - base1 avec le même - val. + The opcintype argument is the + pg_type.oid of the + data type that the operator class indexes. This is a convenience + that allows reuse of the same underlying + equalimage function across operator classes. + If opcintype is a collatable data + type, the appropriate collation OID will be passed to the + equalimage function, using the standard + PG_GET_COLLATION() mechanism. + + + + As far as the operator class is concerned, returning + true indicates that deduplication is safe (or + safe for the collation whose OID was passed to its + equalimage function). However, the core + code will only deem deduplication safe for an index when + every indexed column uses an operator class + that registers an equalimage function, and + each function actually returns true when + called. - - - Des déclarations similaires avec des conditions inversées continuent à - s'appliquer quand less = false. - - - Si le type est trié (type1) par rapport à une collation, l'OID de collation - approprié sera passé à la fonction in_range en utilisant - le mécanisme standard PG_GET_COLLATION(). - + + Image equality is almost the same condition + as simple bitwise equality. There is one subtle difference: When + indexing a varlena data type, the on-disk representation of two + image equal datums may not be bitwise equal due to inconsistent + application of TOAST compression on input. + Formally, when an operator class's + equalimage function returns + true, it is safe to assume that the + datum_image_eq() C function will always agree + with the operator class's order function + (provided that the same collation OID is passed to both the + equalimage and order + functions). + - - Les fonctions in_range n'ont pas besoin de gérer les - valeurs en entrée NULL, et typiquement elles seront marquées comme strict. - + + The core code is fundamentally unable to deduce anything about + the equality implies image equality status of an + operator class within a multiple-data-type family based on + details from other operator classes in the same family. Also, it + is not sensible for an operator family to register a cross-type + equalimage function, and attempting to do so + will result in an error. This is because equality implies + image equality status does not just depend on + sorting/equality semantics, which are more or less defined at the + operator family level. In general, the semantics that one + particular data type implements must be considered separately. + + + The convention followed by the operator classes included with the + core PostgreSQL distribution is to + register a stock, generic equalimage + function. Most operator classes register + btequalimage(), which indicates that + deduplication is safe unconditionally. Operator classes for + collatable data types such as text register + btvarstrequalimage(), which indicates that + deduplication is safe with deterministic collations. Best + practice for third-party extensions is to register their own + custom function to retain control. + + + + Implémentation + + This section covers B-Tree index implementation details that may be + of use to advanced users. See + src/backend/access/nbtree/README in the source + distribution for a much more detailed, internals-focused description + of the B-Tree implementation. + + + + B-Tree Structure + + PostgreSQL B-Tree indexes are + multi-level tree structures, where each level of the tree can be + used as a doubly-linked list of pages. A single metapage is stored + in a fixed position at the start of the first segment file of the + index. All other pages are either leaf pages or internal pages. + Leaf pages are the pages on the lowest level of the tree. All + other levels consist of internal pages. Each leaf page contains + tuples that point to table rows. Each internal page contains + tuples that point to the next level down in the tree. Typically, + over 99% of all pages are leaf pages. Both internal pages and leaf + pages use the standard page format described in . + + + New leaf pages are added to a B-Tree index when an existing leaf + page cannot fit an incoming tuple. A page + split operation makes room for items that originally + belonged on the overflowing page by moving a portion of the items + to a new page. Page splits must also insert a new + downlink to the new page in the parent page, + which may cause the parent to split in turn. Page splits + cascade upwards in a recursive fashion. When the + root page finally cannot fit a new downlink, a root page + split operation takes place. This adds a new level to + the tree structure by creating a new root page that is one level + above the original root page. + + + + + Deduplication + + A duplicate is a leaf page tuple (a tuple that points to a table + row) where all indexed key columns have values + that match corresponding column values from at least one other leaf + page tuple that's close by in the same index. Duplicate tuples are + quite common in practice. B-Tree indexes can use a special, + space-efficient representation for duplicates when an optional + technique is enabled: deduplication. + + + Deduplication works by periodically merging groups of duplicate + tuples together, forming a single posting list tuple for each + group. The column key value(s) only appear once in this + representation. This is followed by a sorted array of + TIDs that point to rows in the table. This + significantly reduces the storage size of indexes where each value + (or each distinct combination of column values) appears several + times on average. The latency of queries can be reduced + significantly. Overall query throughput may increase + significantly. The overhead of routine index vacuuming may also be + reduced significantly. + + + + While NULL is generally not considered to be equal to any other + value, including NULL, NULL is nevertheless treated as just + another value from the domain of indexed values by the B-Tree + implementation (except when enforcing uniqueness in a unique + index). B-Tree deduplication is therefore just as effective with + duplicates that contain a NULL value. + + + + The deduplication process occurs lazily, when a new item is + inserted that cannot fit on an existing leaf page. This prevents + (or at least delays) leaf page splits. Unlike GIN posting list + tuples, B-Tree posting list tuples do not need to expand every time + a new duplicate is inserted; they are merely an alternative + physical representation of the original logical contents of the + leaf page. This design prioritizes consistent performance with + mixed read-write workloads. Most client applications will at least + see a moderate performance benefit from using deduplication. + Deduplication is enabled by default. + + + Write-heavy workloads that don't benefit from deduplication due to + having few or no duplicate values in indexes will incur a small, + fixed performance penalty (unless deduplication is explicitly + disabled). The deduplicate_items storage + parameter can be used to disable deduplication within individual + indexes. There is never any performance penalty with read-only + workloads, since reading posting list tuples is at least as + efficient as reading the standard tuple representation. Disabling + deduplication isn't usually helpful. + + + B-Tree indexes are not directly aware that under MVCC, there might + be multiple extant versions of the same logical table row; to an + index, each tuple is an independent object that needs its own index + entry. Thus, an update of a row always creates all-new index + entries for the row, even if the key values did not change. Some + workloads suffer from index bloat caused by these + implementation-level version duplicates (this is typically a + problem for UPDATE-heavy workloads that cannot + apply the HOT optimization due to modifying at + least one indexed column). B-Tree deduplication does not + distinguish between these implementation-level version duplicates + and conventional duplicates. Deduplication can nevertheless help + with controlling index bloat caused by implementation-level version + churn. + + + + A special heuristic is applied to determine whether a + deduplication pass in a unique index should take place. It can + often skip straight to splitting a leaf page, avoiding a + performance penalty from wasting cycles on unhelpful deduplication + passes. If you're concerned about the overhead of deduplication, + consider setting deduplicate_items = off + selectively. Leaving deduplication enabled in unique indexes has + little downside. + + + + Deduplication cannot be used in all cases due to + implementation-level restrictions. Deduplication safety is + determined when CREATE INDEX or + REINDEX is run. + + + Note that deduplication is deemed unsafe and cannot be used in the + following cases involving semantically significant differences + among equal datums: + + + + + + text, varchar, and char + cannot use deduplication when a + nondeterministic collation is used. Case + and accent differences must be preserved among equal datums. + + + + + + numeric cannot use deduplication. Numeric display + scale must be preserved among equal datums. + + + + + + jsonb cannot use deduplication, since the + jsonb B-Tree operator class uses + numeric internally. + + + + + + float4 and float8 cannot use + deduplication. These types have distinct representations for + -0 and 0, which are + nevertheless considered equal. This difference must be + preserved. + + + + + + There is one further implementation-level restriction that may be + lifted in a future version of + PostgreSQL: + + + + + + Container types (such as composite types, arrays, or range + types) cannot use deduplication. + + + + + + There is one further implementation-level restriction that applies + regardless of the operator class or collation used: + - Une introduction à l'implémentation des index btree peut être trouvée dans - src/backend/access/nbtree/README. + + + + INCLUDE indexes can never use deduplication. + + + + + diff --git a/postgresql/charset.xml b/postgresql/charset.xml index 45606acf8..3529daa86 100644 --- a/postgresql/charset.xml +++ b/postgresql/charset.xml @@ -868,12 +868,12 @@ CREATE COLLATION german (provider = libc, locale = 'de_DE'); Voir Unicode + url="https://www.unicode.org/reports/tr35/tr35-collation.html">Unicode Technical Standard #35 et BCP 47 pour les détails. La liste des types de collationnement possibles (sous-ensemble co) peut être trouvée dans le dépôt + url="https://github.com/unicode-org/cldr/blob/master/common/bcp47/collation.xml">dépôt CLDR. Le ICU Locale Explorer peut être utilisé pour vérifier les détails de la définition d'une locale particulière. Les exemples @@ -942,7 +942,7 @@ CREATE COLLATION french FROM "fr-x-icu"; d'implémenter des comparaisons de ce type ; le drapeau disant que la collation est déterministe indique seulement si les chaînes égales seront départagées ou non par une comparaison au niveau de l'octet. - Voir aussi Unicode Technical + Voir aussi Unicode Technical Standard 10 pour plus d'information sur la terminologie. @@ -975,11 +975,22 @@ CREATE COLLATION ignore_accents (provider = icu, locale = 'und-u-ks-level1-kc-tr d'Unicode et ses nombreux cas spécifiques, elles ont aussi quelques inconvénients. D'abord, leur utilisation génère une pénalité de performance. - Certaines opérations ne sont également pas possibles avec des collations - non déterministes, comme les recherches de motif. - Par conséquent, elles ne devraient être utilisées que dans les cas - où elles sont spécifiquement nécessaires. + Note, in particular, that B-tree cannot use + deduplication with indexes that use a nondeterministic collation. Also, + certain operations are not possible with nondeterministic collations, + such as pattern matching operations. Therefore, they should be used + only in cases where they are specifically wanted. + + + + To deal with text in different Unicode normalization forms, it is also + an option to use the functions/expressions + normalize and is normalized to + preprocess or check the strings, instead of using nondeterministic + collations. There are different trade-offs for each approach. + + @@ -1030,13 +1041,13 @@ CREATE COLLATION ignore_accents (provider = icu, locale = 'und-u-ks-level1-kc-tr Jeux de caractères de <productname>PostgreSQL</productname> - - - - - - - + + + + + + + Nom @@ -1048,7 +1059,7 @@ CREATE COLLATION ignore_accents (provider = icu, locale = 'und-u-ks-level1-kc-tr The Bytes/Char field is populated by looking at the values returned by pg_wchar_table.mblen function for each encoding. --> - Octets/Caractère + Octets/&zwsp;Caractère Alias @@ -1059,7 +1070,7 @@ by pg_wchar_table.mblen function for each encoding. Chinois traditionnelNonNon - 1-2 + 1–2WIN950, Windows950 @@ -1068,7 +1079,7 @@ by pg_wchar_table.mblen function for each encoding. Chinois simplifié Oui Oui - 1-3 + 1–3 @@ -1077,7 +1088,7 @@ by pg_wchar_table.mblen function for each encoding. Japonais Oui Oui - 1-3 + 1–3 @@ -1086,7 +1097,7 @@ by pg_wchar_table.mblen function for each encoding. Japonais Oui Non - 1-3 + 1–3 @@ -1102,7 +1113,7 @@ by pg_wchar_table.mblen function for each encoding. Coréen Oui Oui - 1-3 + 1–3 @@ -1111,7 +1122,7 @@ by pg_wchar_table.mblen function for each encoding. Chinois traditionnel, taïwanais Oui Oui - 1-3 + 1–3 @@ -1120,7 +1131,7 @@ by pg_wchar_table.mblen function for each encoding. Chinois Non Non - 1-4 + 1–4 @@ -1129,7 +1140,7 @@ by pg_wchar_table.mblen function for each encoding. Chinois simplifié Non Non - 1-2 + 1–2 WIN936, Windows936 @@ -1300,7 +1311,7 @@ by pg_wchar_table.mblen function for each encoding. Emacs multi-langues Oui Non - 1-4 + 1–4 @@ -1309,7 +1320,7 @@ by pg_wchar_table.mblen function for each encoding. Japonais Non Non - 1-2 + 1–2 Mskanji, ShiftJIS, WIN932, Windows932 @@ -1318,7 +1329,7 @@ by pg_wchar_table.mblen function for each encoding. Japonais Non Non - 1-2 + 1–2 @@ -1336,7 +1347,7 @@ by pg_wchar_table.mblen function for each encoding. Coréen Non Non - 1-2 + 1–2 WIN949, Windows949 @@ -1345,7 +1356,7 @@ by pg_wchar_table.mblen function for each encoding. tous Oui Oui - 1-4 + 1–4 Unicode @@ -1464,8 +1475,8 @@ by pg_wchar_table.mblen function for each encoding. SQL_ASCII se comporte de façon considérablement différente des autres valeurs. Quand le jeu de caractères du serveur est SQL_ASCII, le serveur interprète les valeurs - des octets 0-127 suivant le standard ASCII alors que les valeurs - d'octets 128-255 sont considérées comme des caractères non interprétés. + des octets 0–127 suivant le standard ASCII alors que les valeurs + d'octets 128–255 sont considérées comme des caractères non interprétés. Aucune conversion de codage n'est effectuée avec SQL_ASCII. De ce fait, cette valeur ne déclare pas tant un encodage spécifique que l'ignorance de l'encodage. Dans la @@ -1566,322 +1577,12 @@ by pg_wchar_table.mblen function for each encoding. Conversion automatique d'encodage entre serveur et client - PostgreSQL automatise la conversion - de jeux de caractères entre client et serveur pour - certaines combinaisons de jeux de caractères. Les informations de conversion sont - conservées dans le catalogue système pg_conversion. - PostgreSQL est livré avec certaines - conversions prédéfinies, conversions listées dans le - . Une nouvelle - conversion peut être créée en utilisant la commande SQL - CREATE CONVERSION. + PostgreSQL automatise la conversion de jeux de + caractères entre client et serveur pour un grand nombre de combinaisons + de jeux de caractères ( + montre lesquels). -
- Conversion de jeux de caractères client/serveur - - - - - - Jeu de caractères serveur - Jeux de caractères client disponibles - - - - - BIG5 - encodage serveur non supporté - - - - EUC_CN - EUC_CN, - MULE_INTERNAL, - UTF8 - - - - EUC_JP - EUC_JP, - MULE_INTERNAL, - SJIS, - UTF8 - - - - EUC_JIS_2004 - EUC_JIS_2004, - SHIFT_JIS_2004, - UTF8 - - - - EUC_KR - EUC_KR, - MULE_INTERNAL, - UTF8 - - - - EUC_TW - EUC_TW, - BIG5, - MULE_INTERNAL, - UTF8 - - - - GB18030 - encodage serveur non supporté - - - - GBK - encodage serveur non supporté - - - - ISO_8859_5 - ISO_8859_5, - KOI8R, - MULE_INTERNAL, - UTF8, - WIN866, - WIN1251 - - - - ISO_8859_6 - ISO_8859_6, - UTF8 - - - - ISO_8859_7 - ISO_8859_7, - UTF8 - - - - ISO_8859_8 - ISO_8859_8, - UTF8 - - - - JOHAB - encodage serveur non supporté - - - - KOI8R - KOI8R, - ISO_8859_5, - MULE_INTERNAL, - UTF8, - WIN866, - WIN1251 - - - - KOI8U - KOI8U, - UTF8 - - - - LATIN1 - LATIN1, - MULE_INTERNAL, - UTF8 - - - - LATIN2 - LATIN2, - MULE_INTERNAL, - UTF8, - WIN1250 - - - - LATIN3 - LATIN3, - MULE_INTERNAL, - UTF8 - - - - LATIN4 - LATIN4, - MULE_INTERNAL, - UTF8 - - - - LATIN5 - LATIN5, - UTF8 - - - - LATIN6 - LATIN6, - UTF8 - - - - LATIN7 - LATIN7, - UTF8 - - - - LATIN8 - LATIN8, - UTF8 - - - - LATIN9 - LATIN9, - UTF8 - - - - LATIN10 - LATIN10, - UTF8 - - - - MULE_INTERNAL - MULE_INTERNAL, - BIG5, - EUC_CN, - EUC_JP, - EUC_KR, - EUC_TW, - ISO_8859_5, - KOI8R, - LATIN1 vers LATIN4, - SJIS, - WIN866, - WIN1250, - WIN1251 - - - - SJIS - encodage serveur non supporté - - - - SHIFT_JIS_2004 - encodage serveur non supporté - - - - SHIFT_JIS_2004 - non supporté comme encodage serveur - - - - SQL_ASCII - tous (aucune conversion n'est réalisée) - - - - UHC - encodage serveur non supporté - - - - UTF8 - tout encodage supporté - - - - WIN866 - WIN866, - ISO_8859_5, - KOI8R, - MULE_INTERNAL, - UTF8, - WIN1251 - - - - WIN874 - WIN874, - UTF8 - - - - WIN1250 - WIN1250, - LATIN2, - MULE_INTERNAL, - UTF8 - - - - WIN1251 - WIN1251, - ISO_8859_5, - KOI8R, - MULE_INTERNAL, - UTF8, - WIN866 - - - - WIN1252 - WIN1252, - UTF8 - - - - WIN1253 - WIN1253, - UTF8 - - - - WIN1254 - WIN1254, - UTF8 - - - - WIN1255 - WIN1255, - UTF8 - - - - WIN1256 - WIN1256, - UTF8 - - - - WIN1257 - WIN1257, - UTF8 - - - - WIN1258 - WIN1258, - UTF8 - - - - -
- Pour activer la conversion automatique des jeux de caractères, il est nécessaire d'indiquer à PostgreSQL @@ -1965,12 +1666,984 @@ by pg_wchar_table.mblen function for each encoding. - Si l'encodage client est défini en tant que - SQL_ASCII, la conversion de l'encodage est désactivée quelque - soit celui du serveur. Comme pour le serveur, - SQL_ASCII est déconseillé sauf à ne travailler qu'avec - des données ASCII. + Si l'encodage client est défini en tant que SQL_ASCII, + la conversion de l'encodage est désactivée quelque soit celui du serveur. + (However, if the server's character set is not + SQL_ASCII, the server will still check that incoming + data is valid for that encoding; so the net effect is as though the + client character set were the same as the server's.) Comme pour le + serveur, SQL_ASCII est déconseillé sauf à ne + travailler qu'avec des données ASCII. + +
+ + + Available Character Set Conversions + + + PostgreSQL allows conversion between any + two character sets for which a conversion function is listed in the + pg_conversion + system catalog. PostgreSQL comes with + some predefined conversions, as summarized in + and shown in more + detail in . You can + create a new conversion using the SQL command + . (To be used for automatic + client/server conversions, a conversion must be marked + as default for its character set pair.) + + + Built-in Client/Server Character Set Conversions + + + + + + Server Character Set + Available Client Character Sets + + + + + BIG5 + not supported as a server encoding + + + + EUC_CN + EUC_CN, + MULE_INTERNAL, + UTF8 + + + + EUC_JP + EUC_JP, + MULE_INTERNAL, + SJIS, + UTF8 + + + + EUC_JIS_2004 + EUC_JIS_2004, + SHIFT_JIS_2004, + UTF8 + + + + EUC_KR + EUC_KR, + MULE_INTERNAL, + UTF8 + + + + EUC_TW + EUC_TW, + BIG5, + MULE_INTERNAL, + UTF8 + + + + GB18030 + not supported as a server encoding + + + + GBK + not supported as a server encoding + + + + ISO_8859_5 + ISO_8859_5, + KOI8R, + MULE_INTERNAL, + UTF8, + WIN866, + WIN1251 + + + + ISO_8859_6 + ISO_8859_6, + UTF8 + + + + ISO_8859_7 + ISO_8859_7, + UTF8 + + + + ISO_8859_8 + ISO_8859_8, + UTF8 + + + + JOHAB + not supported as a server encoding + + + + KOI8R + KOI8R, + ISO_8859_5, + MULE_INTERNAL, + UTF8, + WIN866, + WIN1251 + + + + KOI8U + KOI8U, + UTF8 + + + + LATIN1 + LATIN1, + MULE_INTERNAL, + UTF8 + + + + LATIN2 + LATIN2, + MULE_INTERNAL, + UTF8, + WIN1250 + + + + LATIN3 + LATIN3, + MULE_INTERNAL, + UTF8 + + + + LATIN4 + LATIN4, + MULE_INTERNAL, + UTF8 + + + + LATIN5 + LATIN5, + UTF8 + + + + LATIN6 + LATIN6, + UTF8 + + + + LATIN7 + LATIN7, + UTF8 + + + + LATIN8 + LATIN8, + UTF8 + + + + LATIN9 + LATIN9, + UTF8 + + + + LATIN10 + LATIN10, + UTF8 + + + + MULE_INTERNAL + MULE_INTERNAL, + BIG5, + EUC_CN, + EUC_JP, + EUC_KR, + EUC_TW, + ISO_8859_5, + KOI8R, + LATIN1 to LATIN4, + SJIS, + WIN866, + WIN1250, + WIN1251 + + + + SJIS + not supported as a server encoding + + + + SHIFT_JIS_2004 + not supported as a server encoding + + + + SQL_ASCII + any (no conversion will be performed) + + + + UHC + not supported as a server encoding + + + + UTF8 + all supported encodings + + + + WIN866 + WIN866, + ISO_8859_5, + KOI8R, + MULE_INTERNAL, + UTF8, + WIN1251 + + + + WIN874 + WIN874, + UTF8 + + + + WIN1250 + WIN1250, + LATIN2, + MULE_INTERNAL, + UTF8 + + + + WIN1251 + WIN1251, + ISO_8859_5, + KOI8R, + MULE_INTERNAL, + UTF8, + WIN866 + + + + WIN1252 + WIN1252, + UTF8 + + + + WIN1253 + WIN1253, + UTF8 + + + + WIN1254 + WIN1254, + UTF8 + + + + WIN1255 + WIN1255, + UTF8 + + + + WIN1256 + WIN1256, + UTF8 + + + + WIN1257 + WIN1257, + UTF8 + + + + WIN1258 + WIN1258, + UTF8 + + + + +
+ + + All Built-in Character Set Conversions + + + + + + + Conversion Name + + + The conversion names follow a standard naming scheme: The + official name of the source encoding with all + non-alphanumeric characters replaced by underscores, followed + by _to_, followed by the similarly processed + destination encoding name. Therefore, these names sometimes + deviate from the customary encoding names shown in + . + + + + Source Encoding + Destination Encoding + + + + + + big5_to_euc_tw + BIG5 + EUC_TW + + + big5_to_mic + BIG5 + MULE_INTERNAL + + + big5_to_utf8 + BIG5 + UTF8 + + + euc_cn_to_mic + EUC_CN + MULE_INTERNAL + + + euc_cn_to_utf8 + EUC_CN + UTF8 + + + euc_jp_to_mic + EUC_JP + MULE_INTERNAL + + + euc_jp_to_sjis + EUC_JP + SJIS + + + euc_jp_to_utf8 + EUC_JP + UTF8 + + + euc_kr_to_mic + EUC_KR + MULE_INTERNAL + + + euc_kr_to_utf8 + EUC_KR + UTF8 + + + euc_tw_to_big5 + EUC_TW + BIG5 + + + euc_tw_to_mic + EUC_TW + MULE_INTERNAL + + + euc_tw_to_utf8 + EUC_TW + UTF8 + + + gb18030_to_utf8 + GB18030 + UTF8 + + + gbk_to_utf8 + GBK + UTF8 + + + iso_8859_10_to_utf8 + LATIN6 + UTF8 + + + iso_8859_13_to_utf8 + LATIN7 + UTF8 + + + iso_8859_14_to_utf8 + LATIN8 + UTF8 + + + iso_8859_15_to_utf8 + LATIN9 + UTF8 + + + iso_8859_16_to_utf8 + LATIN10 + UTF8 + + + iso_8859_1_to_mic + LATIN1 + MULE_INTERNAL + + + iso_8859_1_to_utf8 + LATIN1 + UTF8 + + + iso_8859_2_to_mic + LATIN2 + MULE_INTERNAL + + + iso_8859_2_to_utf8 + LATIN2 + UTF8 + + + iso_8859_2_to_windows_1250 + LATIN2 + WIN1250 + + + iso_8859_3_to_mic + LATIN3 + MULE_INTERNAL + + + iso_8859_3_to_utf8 + LATIN3 + UTF8 + + + iso_8859_4_to_mic + LATIN4 + MULE_INTERNAL + + + iso_8859_4_to_utf8 + LATIN4 + UTF8 + + + iso_8859_5_to_koi8_r + ISO_8859_5 + KOI8R + + + iso_8859_5_to_mic + ISO_8859_5 + MULE_INTERNAL + + + iso_8859_5_to_utf8 + ISO_8859_5 + UTF8 + + + iso_8859_5_to_windows_1251 + ISO_8859_5 + WIN1251 + + + iso_8859_5_to_windows_866 + ISO_8859_5 + WIN866 + + + iso_8859_6_to_utf8 + ISO_8859_6 + UTF8 + + + iso_8859_7_to_utf8 + ISO_8859_7 + UTF8 + + + iso_8859_8_to_utf8 + ISO_8859_8 + UTF8 + + + iso_8859_9_to_utf8 + LATIN5 + UTF8 + + + johab_to_utf8 + JOHAB + UTF8 + + + koi8_r_to_iso_8859_5 + KOI8R + ISO_8859_5 + + + koi8_r_to_mic + KOI8R + MULE_INTERNAL + + + koi8_r_to_utf8 + KOI8R + UTF8 + + + koi8_r_to_windows_1251 + KOI8R + WIN1251 + + + koi8_r_to_windows_866 + KOI8R + WIN866 + + + koi8_u_to_utf8 + KOI8U + UTF8 + + + mic_to_big5 + MULE_INTERNAL + BIG5 + + + mic_to_euc_cn + MULE_INTERNAL + EUC_CN + + + mic_to_euc_jp + MULE_INTERNAL + EUC_JP + + + mic_to_euc_kr + MULE_INTERNAL + EUC_KR + + + mic_to_euc_tw + MULE_INTERNAL + EUC_TW + + + mic_to_iso_8859_1 + MULE_INTERNAL + LATIN1 + + + mic_to_iso_8859_2 + MULE_INTERNAL + LATIN2 + + + mic_to_iso_8859_3 + MULE_INTERNAL + LATIN3 + + + mic_to_iso_8859_4 + MULE_INTERNAL + LATIN4 + + + mic_to_iso_8859_5 + MULE_INTERNAL + ISO_8859_5 + + + mic_to_koi8_r + MULE_INTERNAL + KOI8R + + + mic_to_sjis + MULE_INTERNAL + SJIS + + + mic_to_windows_1250 + MULE_INTERNAL + WIN1250 + + + mic_to_windows_1251 + MULE_INTERNAL + WIN1251 + + + mic_to_windows_866 + MULE_INTERNAL + WIN866 + + + sjis_to_euc_jp + SJIS + EUC_JP + + + sjis_to_mic + SJIS + MULE_INTERNAL + + + sjis_to_utf8 + SJIS + UTF8 + + + windows_1258_to_utf8 + WIN1258 + UTF8 + + + uhc_to_utf8 + UHC + UTF8 + + + utf8_to_big5 + UTF8 + BIG5 + + + utf8_to_euc_cn + UTF8 + EUC_CN + + + utf8_to_euc_jp + UTF8 + EUC_JP + + + utf8_to_euc_kr + UTF8 + EUC_KR + + + utf8_to_euc_tw + UTF8 + EUC_TW + + + utf8_to_gb18030 + UTF8 + GB18030 + + + utf8_to_gbk + UTF8 + GBK + + + utf8_to_iso_8859_1 + UTF8 + LATIN1 + + + utf8_to_iso_8859_10 + UTF8 + LATIN6 + + + utf8_to_iso_8859_13 + UTF8 + LATIN7 + + + utf8_to_iso_8859_14 + UTF8 + LATIN8 + + + utf8_to_iso_8859_15 + UTF8 + LATIN9 + + + utf8_to_iso_8859_16 + UTF8 + LATIN10 + + + utf8_to_iso_8859_2 + UTF8 + LATIN2 + + + utf8_to_iso_8859_3 + UTF8 + LATIN3 + + + utf8_to_iso_8859_4 + UTF8 + LATIN4 + + + utf8_to_iso_8859_5 + UTF8 + ISO_8859_5 + + + utf8_to_iso_8859_6 + UTF8 + ISO_8859_6 + + + utf8_to_iso_8859_7 + UTF8 + ISO_8859_7 + + + utf8_to_iso_8859_8 + UTF8 + ISO_8859_8 + + + utf8_to_iso_8859_9 + UTF8 + LATIN5 + + + utf8_to_johab + UTF8 + JOHAB + + + utf8_to_koi8_r + UTF8 + KOI8R + + + utf8_to_koi8_u + UTF8 + KOI8U + + + utf8_to_sjis + UTF8 + SJIS + + + utf8_to_windows_1258 + UTF8 + WIN1258 + + + utf8_to_uhc + UTF8 + UHC + + + utf8_to_windows_1250 + UTF8 + WIN1250 + + + utf8_to_windows_1251 + UTF8 + WIN1251 + + + utf8_to_windows_1252 + UTF8 + WIN1252 + + + utf8_to_windows_1253 + UTF8 + WIN1253 + + + utf8_to_windows_1254 + UTF8 + WIN1254 + + + utf8_to_windows_1255 + UTF8 + WIN1255 + + + utf8_to_windows_1256 + UTF8 + WIN1256 + + + utf8_to_windows_1257 + UTF8 + WIN1257 + + + utf8_to_windows_866 + UTF8 + WIN866 + + + utf8_to_windows_874 + UTF8 + WIN874 + + + windows_1250_to_iso_8859_2 + WIN1250 + LATIN2 + + + windows_1250_to_mic + WIN1250 + MULE_INTERNAL + + + windows_1250_to_utf8 + WIN1250 + UTF8 + + + windows_1251_to_iso_8859_5 + WIN1251 + ISO_8859_5 + + + windows_1251_to_koi8_r + WIN1251 + KOI8R + + + windows_1251_to_mic + WIN1251 + MULE_INTERNAL + + + windows_1251_to_utf8 + WIN1251 + UTF8 + + + windows_1251_to_windows_866 + WIN1251 + WIN866 + + + windows_1252_to_utf8 + WIN1252 + UTF8 + + + windows_1256_to_utf8 + WIN1256 + UTF8 + + + windows_866_to_iso_8859_5 + WIN866 + ISO_8859_5 + + + windows_866_to_koi8_r + WIN866 + KOI8R + + + windows_866_to_mic + WIN866 + MULE_INTERNAL + + + windows_866_to_utf8 + WIN866 + UTF8 + + + windows_866_to_windows_1251 + WIN866 + WIN + + + windows_874_to_utf8 + WIN874 + UTF8 + + + euc_jis_2004_to_utf8 + EUC_JIS_2004 + UTF8 + + + utf8_to_euc_jis_2004 + UTF8 + EUC_JIS_2004 + + + shift_jis_2004_to_utf8 + SHIFT_JIS_2004 + UTF8 + + + utf8_to_shift_jis_2004 + UTF8 + SHIFT_JIS_2004 + + + euc_jis_2004_to_shift_jis_2004 + EUC_JIS_2004 + SHIFT_JIS_2004 + + + shift_jis_2004_to_euc_jis_2004 + SHIFT_JIS_2004 + EUC_JIS_2004 + + + +
@@ -1994,7 +2667,7 @@ by pg_wchar_table.mblen function for each encoding.
- + diff --git a/postgresql/citext.xml b/postgresql/citext.xml index 717959b49..2d44e53ba 100644 --- a/postgresql/citext.xml +++ b/postgresql/citext.xml @@ -24,6 +24,12 @@ + + This module is considered trusted, that is, it can be + installed by non-superusers who have CREATE privilege + on the current database. + + Intérêt @@ -231,18 +237,19 @@ toujours à partir de la configuration LC_CTYPE de la base de données (c'est-à-dire comme si COLLATE "default" avait été donné). Cela pourrait changer dans une prochaine version pour que - les deux étapes suivent la clause COLLATE - specification. + les deux étapes suivent la clause COLLATE. - citext n'est pas aussi performant que text parce que - les fonctions opérateurs et les fonctions de comparaison B-tree - doivent faire des copies des données et les convertir en minuscules pour les - comparaisons. C'est cependant légèrement plus efficace qu'utiliser - lower pour obtenir des comparaisons insensibles à la casse. + citext n'est pas aussi performant que text + parce que les fonctions opérateurs et les fonctions de comparaison B-tree + doivent faire des copies des données et les convertir en minuscules pour + les comparaisons. Also, only text can support B-Tree + deduplication. However, citext estlégèrement plus efficace + qu'utiliser lower pour obtenir des comparaisons + insensibles à la casse. diff --git a/postgresql/color.xml b/postgresql/color.xml new file mode 100644 index 000000000..33febddc8 --- /dev/null +++ b/postgresql/color.xml @@ -0,0 +1,102 @@ + + + + + Color Support + + + color + + + + Most programs in the PostgreSQL package can produce colorized console + output. This appendix describes how that is configured. + + + + When Color is Used + + + To use colorized output, set the environment variable + PG_COLORPG_COLOR + as follows: + + + + + If the value is always, then color is used. + + + + + + If the value is auto and the standard error stream + is associated with a terminal device, then color is used. + + + + + + Otherwise, color is not used. + + + + + + + + Configuring the Colors + + + The actual colors to be used are configured using the environment variable + PG_COLORSPG_COLORS + (note plural). The value is a colon-separated list of + key=value + pairs. The keys specify what the color is to be used for. The values are + SGR (Select Graphic Rendition) specifications, which are interpreted by the + terminal. + + + + The following keys are currently in use: + + + error + + used to highlight the text error in error messages + + + + + warning + + used to highlight the text warning in warning + messages + + + + + locus + + used to highlight location information (e.g., program name and + file name) in messages + + + + + + + The default value is error=01;31:warning=01;35:locus=01 + (01;31 = bold red, 01;35 = bold + magenta, 01 = bold default color). + + + + + This color specification format is also used by other software packages + such as GCC, GNU + coreutils, and GNU grep. + + + + diff --git a/postgresql/config.xml b/postgresql/config.xml index 5b02f7c8c..9bd48c32a 100644 --- a/postgresql/config.xml +++ b/postgresql/config.xml @@ -799,7 +799,10 @@ include 'nom_fichier' des sockets de domaine Unix, auquel cas seules les sockets TCP/IP pourront être utilisées pour se connecter au serveur. La valeur par défaut est habituellement /tmp, mais cela - peut se changer au moment de la contruction. Ce paramètre ne peut + peut se changer au moment de la contruction. + On Windows, the default is empty, which means no Unix-domain socket is + created by default. + Ce paramètre ne peut être configuré qu'au lancement du serveur. @@ -819,8 +822,6 @@ include 'nom_fichier' Un effet similaire peut être atteint en pointant unix_socket_directories vers un répertoire ayant un droit de recherche limité à l'audience acceptée. - Ce paramètre n'a aucun intérêt sous Windows car ce système n'a pas - de sockets domaine Unix. @@ -845,8 +846,8 @@ include 'nom_fichier' - Ce paramètre n'a aucun intérêt sous Windows car ce système n'a pas - de sockets domaine Unix. + Ce paramètre n'est pas supporté sous Windows. Sa configuration sera + ignorée. @@ -888,8 +889,10 @@ include 'nom_fichier' - Ce paramètre n'a aucun intérêt sous Windows car ce système n'a pas - de sockets domaine Unix. + This parameter is irrelevant on systems, notably Solaris as of Solaris + 10, that ignore socket permissions entirely. There, one can achieve a + similar effect by pointing unix_socket_directories to a + directory having search permission limited to the desired audience. @@ -1421,11 +1424,8 @@ include 'nom_fichier' - La valeur par défaut est TLSv1, principalement pour - supporter les versions plus anciennes de la bibliothèque - OpenSSL. Vous pourriez vouloir le configurer à - une valeur plus haute si tous les composants logiciels peuvent supporter - les versions plus récentes du protocole. + La valeur par défaut est TLSv1.2, which satisfies industry + best practices as of this writing. @@ -1847,6 +1847,27 @@ include 'nom_fichier' + + logical_decoding_work_mem (integer) + + logical_decoding_work_mem configuration parameter + + + + + Specifies the maximum amount of memory to be used by logical decoding, + before some of the decoded changes are written to local disk. This + limits the amount of memory used by logical streaming replication + connections. It defaults to 64 megabytes (64MB). + Since each replication connection only uses a single buffer of this size, + and an installation normally doesn't have many such connections + concurrently (as limited by max_wal_senders), it's + safe to set this value significantly higher than work_mem, + reducing the amount of decoded changes written to disk. + + + + max_stack_depth (integer) @@ -2323,6 +2344,26 @@ block : bloc vidé, dirty bloc : bloc à vider ? + + maintenance_io_concurrency (integer) + + maintenance_io_concurrency configuration parameter + + + + + Similar to effective_io_concurrency, but used + for maintenance work that is done on behalf of many client sessions. + + + The default is 10 on supported systems, otherwise 0. This value can + be overridden for tables in a particular tablespace by setting the + tablespace parameter of the same name (see + ). + + + + max_worker_processes (integer) @@ -2398,9 +2439,10 @@ block : bloc vidé, dirty bloc : bloc à vider ? Indique le nombre maximum de workers parallèles qu'une commande utilitaire - peut démarrer. Actuellement, la seule commande utilitaire qui supporte + peut démarrer. Actuellement, les commandes utilitaires qui supportent les workers parallèles est CREATE INDEX, et seulement - à la création d'un index B-tree. Les workers parallèles sont déduits du + à la création d'un index B-tree, et VACUUM sans l'option + FULL. Les workers parallèles sont déduits du pool de processus défini par , dans la limite de . Notez que le nombre de workers demandé peut ne pas être disponible lors de l'exécution. @@ -2576,17 +2618,23 @@ block : bloc vidé, dirty bloc : bloc à vider ? serveur. - Au niveau minimal, certains enregistrements dans - les journaux de transactions peuvent être évités, ce qui peut - rendre ces opérations plus rapides (voir ). Les opérations concernées par cette - optimisation incluent : + Au niveau minimal, no information is logged for + permanent relations for the remainder of a transaction that creates or + rewrites them. This can make operations much faster (see + ). Operations that initiate this + optimization include: CREATE TABLE AS CREATE INDEX + ALTER ... SET TABLESPACE CLUSTER COPY dans des tables qui ont été créées ou tronquées dans la même transaction + CREATE TABLE + REFRESH MATERIALIZED VIEW + (without ) + REINDEX + TRUNCATE Mais, du coup, les journaux au niveau minimal ne contiennent pas suffisamment d'informations pour reconstruire les données à partir d'une sauvegarde @@ -3014,6 +3062,27 @@ block : bloc vidé, dirty bloc : bloc à vider ? + + wal_skip_threshold (integer) + + wal_skip_threshold configuration parameter + + + + + When wal_level is minimal and a + transaction commits after creating or rewriting a permanent relation, + this setting determines how to persist the new data. If the data is + smaller than this setting, write it to the WAL log; otherwise, use an + fsync of affected files. Depending on the properties of your storage, + raising or lowering this value might help if such commits are slowing + concurrent transactions. If this value is specified without units, it + is taken as kilobytes. The default is two megabytes + (2MB). + + + + commit_delay (integer) @@ -3743,6 +3812,14 @@ restore_command = 'copy "C:\\server\\archivedir\\%f" "%p"' # Windows n'a été configurée. Si n'est pas activé, une configuration à pause agira de la même façon qu'une configuration à shutdown. + If the recovery target is reached while a promotion is ongoing, + a setting of pause will act the same as + promote. + + + In any case, if a recovery target is configured but the archive + recovery ends before the target is reached, the server will shut down + with a fatal error. @@ -3909,6 +3986,29 @@ restore_command = 'copy "C:\\server\\archivedir\\%f" "%p"' # Windows + + max_slot_wal_keep_size (integer) + + max_slot_wal_keep_size configuration parameter + + + + + Specify the maximum size of WAL files + that replication + slots are allowed to retain in the pg_wal + directory at checkpoint time. + If max_slot_wal_keep_size is -1 (the default), + replication slots retain unlimited amount of WAL files. If + restart_lsn of a replication slot gets behind more than that megabytes + from the current LSN, the standby using the slot may no longer be able + to continue replication due to removal of required WAL files. You + can see the WAL availability of replication slots + in pg_replication_slots. + + + + wal_sender_timeout (integer) @@ -4187,8 +4287,12 @@ ANY nb_sync ( nb_sync ( ). Ce paramètre peut seulement - être configuré au démarrage du serveur. Il n'a aucun effet si - primary_conninfo n'est pas configuré. + linkend="streaming-replication-slots"/>). This parameter can only be set + in the postgresql.conf file or on the server command + line. If this parameter is changed while the WAL receiver process is + running, that process is signalled to shut down and expected to restart + with the new setting. Il n'a aucun effet si + primary_conninfo n'est pas configuré or the server is + not in standby mode. @@ -4221,7 +4329,7 @@ ANY nb_sync ( nb_sync ( + wal_receiver_create_temp_slot (boolean) + + wal_receiver_create_temp_slot configuration parameter + + + + + Specifies whether the WAL receiver process should create a temporary replication + slot on the remote instance when no permanent replication slot to use + has been configured (using ). + The default is off. This parameter can only be set in the + postgresql.conf file or on the server command line. + If this parameter is changed while the WAL receiver process is running, + that process is signalled to shut down and expected to restart with + the new setting. + + + + wal_receiver_status_interval (integer) @@ -4639,6 +4767,23 @@ ANY nb_sync ( + enable_groupingsets_hash_disk (boolean) + + enable_groupingsets_hash_disk configuration parameter + + + + + Enables or disables the query planner's use of hashed aggregation plan + types for grouping sets when the total size of the hash tables is + expected to exceed work_mem. See . The default is + off. + + + + enable_hashagg (boolean) @@ -4653,6 +4798,21 @@ ANY nb_sync ( + enable_hashagg_disk (boolean) + + enable_hashagg_disk configuration parameter + + + + + Enables or disables the query planner's use of hashed aggregation plan + types when the memory usage is expected to exceed + work_mem. The default is on. + + + + enable_hashjoin (boolean) @@ -4667,6 +4827,20 @@ ANY nb_sync ( + enable_incrementalsort (boolean) + + enable_incrementalsort configuration parameter + + + + + Enables or disables the query planner's use of incremental sort steps. + The default is on. + + + + enable_indexscan (boolean) @@ -5105,11 +5279,14 @@ ANY nb_sync ( . + Si cette valeur est spécifiée sans unité, elle est comprise comme un + nombre de blocs, autrement dit BLCKSZ octets, + typiquement 8 Ko. La valeur par défaut est 512 kilooctets + (512kB). @@ -6197,17 +6374,22 @@ local0.* /var/log/postgresql Trace la durée de toute instruction terminée dont le temps d'exécution - égale ou dépasse cette durée. SI cette valeur est indiquée sans unité, - elle est comprise comme un nombre de millisecondes. Positionné à zéro, les - durées de toutes les instructions sont tracées. -1 - (valeur par défaut) désactive la trace de la durée des requêtes. Par - exemple, si le paramètre est positionné à - 250ms, alors toutes les instructions SQL dont la durée - est supérieure ou égale à 250 ms sont tracées. Il est utile d'activer - ce paramètre pour tracer les requêtes non optimisées des applications. + égale ou dépasse cette durée. Par exemple, si le paramètre est positionné + à 250ms, alors toutes les instructions SQL dont la + durée est supérieure ou égale à 250 ms sont tracées. Il est utile + d'activer ce paramètre pour tracer les requêtes non optimisées des + applications. If this value is specified without units, it is taken as + milliseconds. Setting this to zero prints all statement durations. + -1 (the default) disables logging statement durations. Seuls les superutilisateurs peuvent modifier cette configuration. + + This overrides , + meaning that queries with duration exceeding this setting are not + subject to sampling and are always logged. + + Pour les clients utilisant le protocole de requêtage étendu, les durées des étapes Parse (analyse), Bind (lien) et Execute (exécution) sont @@ -6229,32 +6411,99 @@ local0.* /var/log/postgresql - - log_transaction_sample_rate (real) - - paramètre de configuration log_transaction_sample_rate - - - - - Initialise la fraction de transactions dont les requêtes seront toutes - tracées en plus des requêtes tracées pour d'autres raisons. Cela - s'applique à toute nouvelle transaction, quelque soit les durées des - requêtes. La valeur par défaut est 0, signifiant de - ne pas tracer les requêtes des transactions. Configurer ce paramètre à - 1 permet de tracer toutes les requêtes de toutes les - transactions. log_transaction_sample_rate est utile - pour tracer un exemple de transaction. - Seuls les superutilisateurs peuvent changer ce paramètre. - - - - Comme toutes les options sur les traces des requêtes, cette option peut - ajouter une surcharge importante. - - - - + + log_min_duration_sample (integer) + + log_min_duration_sample configuration parameter + + + + + Allows sampling the duration of completed statements that ran for + at least the specified amount of time. This produces the same + kind of log entries as + , but only for a + subset of the executed statements, with sample rate controlled by + . + For example, if you set it to 100ms then all + SQL statements that run 100ms or longer will be considered for + sampling. Enabling this parameter can be helpful when the + traffic is too high to log all queries. + If this value is specified without units, it is taken as milliseconds. + Setting this to zero samples all statement durations. + -1 (the default) disables sampling statement + durations. Only superusers can change this setting. + + + + This setting has lower priority + than log_min_duration_statement, meaning that + statements with durations + exceeding log_min_duration_statement are not + subject to sampling and are always logged. + + + + Other notes for log_min_duration_statement + apply also to this setting. + + + + + + log_statement_sample_rate (floating point) + + log_statement_sample_rate configuration parameter + + + + + Determines the fraction of statements with duration exceeding + that will be logged. + Sampling is stochastic, for example 0.5 means + there is statistically one chance in two that any given statement + will be logged. + The default is 1.0, meaning to log all sampled + statements. + Setting this to zero disables sampled statement-duration logging, + the same as setting + log_min_duration_sample to + -1. + Only superusers can change this setting. + + + + + + log_transaction_sample_rate (floating point) + + paramètre de configuration log_transaction_sample_rate + + + + + Initialise la fraction de transactions dont les requêtes seront toutes + tracées en plus des requêtes tracées pour d'autres raisons. Cela + s'applique à toute nouvelle transaction, quelque soit les durées des + requêtes. + Sampling is stochastic, for example 0.1 means + there is statistically one chance in ten that any given transaction + will be logged. + log_transaction_sample_rate can be helpful to + construct a sample of transactions. + The default is 0, meaning not to log + statements from any additional transactions. Setting this + to 1 logs all statements of all transactions. + Seuls les superutilisateurs peuvent changer ce paramètre. + + + + Comme toutes les options sur les traces des requêtes, cette option peut + ajouter une surcharge importante. + + + + @@ -6269,6 +6518,10 @@ local0.* /var/log/postgresql Niveaux de sévérité des messages + + + + Sévérité @@ -6280,7 +6533,7 @@ local0.* /var/log/postgresql - DEBUG1..DEBUG5 + DEBUG1 .. DEBUG5 Fournit des informations successivement plus détaillées à destination des développeurs. DEBUG @@ -6579,11 +6832,16 @@ local0.* /var/log/postgresql l'option. Une valeur négative implique un alignement à droite par ajout d'espaces alors qu'une valeur positive est pour un alignement à gauche. L'alignement peut être utile pour aider à la lecture des - fichiers de trace. Ce paramètre ne peut être configuré que dans le + fichiers de trace. + + + + Ce paramètre ne peut être configuré que dans le fichier postgresql.conf ou indiqué sur la ligne de commande. La valeur par défaut est '%m [%p] ' ce qui affiche dans les trace l'heure courante ainsi que l'identifiant de processus. + @@ -6623,6 +6881,11 @@ local0.* /var/log/postgresql Nom d'hôte distant ou adresse IP oui + + %b + Backend type + no + %p ID du processus @@ -6695,6 +6958,14 @@ local0.* /var/log/postgresql + + The backend type corresponds to the column + backend_type in the view , but additional types can appear + in the log that don't show in that view. + + + L'échappement %c affiche un identifiant de session quasi-unique constitué de deux nombres hexadécimaux sur quatre octets (sans les zéros initiaux) et séparés par un point. Les nombres @@ -6759,6 +7030,61 @@ log_line_prefix = '%m [%p] %q%u@%d/%a ' + + log_parameter_max_length (integer) + + log_parameter_max_length configuration parameter + + + + + If greater than zero, each bind parameter value reported in + non-error statement-logging messages is trimmed to this many bytes. + Zero disables logging bind parameters with statements. + -1 (the default) allows bind parameters to be + logged in full. + If this value is specified without units, it is taken as bytes. + Only superusers can change this setting. + + + + This setting only affects log messages printed as a result of + , + , and related settings. Non-zero + values of this setting add some overhead, particularly if parameters + are sent in binary form, since then conversion to text is required. + + + + + + log_parameter_max_length_on_error (integer) + + log_parameter_max_length_on_error configuration parameter + + + + + If greater than zero, each bind parameter value reported in error + messages is trimmed to this many bytes. + Zero (the default) disables including bind parameters in error + messages. + -1 allows bind parameters to be printed in full. + If this value is specified without units, it is taken as bytes. + + + + Non-zero values of this setting add overhead, as + PostgreSQL will need to store textual + representations of parameter values in memory at the start of each + statement, whether or not an error eventually occurs. The overhead + is greater when bind parameters are sent in binary form than when + they are sent as text, since the former case requires data + conversion while the latter only requires copying the string. + + + + log_statement (enum) @@ -6887,7 +7213,8 @@ log_line_prefix = '%m [%p] %q%u@%d/%a ' de caractères pour arriver à la position de l'erreur, l'emplacement de l'erreur dans le code source de PostgreSQL (si log_error_verbosity est configuré à - verbose) et le nom de l'application. + verbose), le nom de l'application et le type du processus + serveur. @@ -6921,6 +7248,7 @@ CREATE TABLE postgres_log query_pos integer, location text, application_name text, + backend_type text, PRIMARY KEY (session_id, session_line_num) ); @@ -7242,8 +7570,7 @@ Ces paramètres contrôlent le comportement de la fonctionnalité appelée autovacuum. Se référer à la pour plus de détails. Notez que beaucoup de ces paramètres peuvent être surchargés au niveau - de chaque table ; voir . + de chaque table ; voir . @@ -7355,6 +7682,28 @@ Ces paramètres contrôlent le comportement de la fonctionnalité appelée + + autovacuum_vacuum_insert_threshold (integer) + + autovacuum_vacuum_insert_threshold + configuration parameter + + + + + Specifies the number of inserted tuples needed to trigger a + VACUUM in any one table. + The default is 1000 tuples. If -1 is specified, autovacuum will not + trigger a VACUUM operation on any tables based on + the number of inserts. + This parameter can only be set in the postgresql.conf + file or on the server command line; + but the setting can be overridden for individual tables by + changing table storage parameters. + + + + autovacuum_analyze_threshold (integer) @@ -7374,6 +7723,27 @@ Ces paramètres contrôlent le comportement de la fonctionnalité appelée + + autovacuum_vacuum_insert_scale_factor (floating point) + + autovacuum_vacuum_insert_scale_factor + configuration parameter + + + + + Specifies a fraction of the table size to add to + autovacuum_vacuum_insert_threshold + when deciding whether to trigger a VACUUM. + The default is 0.2 (20% of table size). + This parameter can only be set in the postgresql.conf + file or on the server command line; + but the setting can be overridden for individual tables by + changing table storage parameters. + + + + autovacuum_vacuum_scale_factor (floating point) @@ -7962,10 +8332,13 @@ Ces paramètres contrôlent le comportement de la fonctionnalité appelée Le délai est mesuré à partir du moment où une commande arrive au serveur - jusqu'à sa fin par le serveur. Dans le protocole de requête étendue, le - délai commence lors du début de l'exécution de tout message relatif à la - requête (Parse, Bind, Execute, Describe) et elle est annulée à la fin du - message Execute ou Sync. + jusqu'à sa fin par le serveur. If multiple SQL statements appear in a + single simple-Query message, the timeout is applied to each statement + separately. (PostgreSQL versions before 13 + usually treated the timeout as applying to the whole query string.) Dans + le protocole de requête étendue, le délai commence lors du début de + l'exécution de tout message relatif à la requête (Parse, Bind, Execute, + Describe) et elle est annulée à la fin du message Execute ou Sync. @@ -9727,9 +10100,37 @@ SET XML OPTION { DOCUMENT | CONTENT }; paramètre de configuration allow_system_table_mods - Autorise la modification de la structure des tables systèmes. - Ce paramètre, utilisé par initdb, - n'est modifiable qu'au démarrage du serveur. + Allows modification of the structure of system tables as well as + certain other risky actions on system tables. This is otherwise not + allowed even for superusers. Ill-advised use of this setting can + cause irretrievable data loss or seriously corrupt the database + system. Only superusers can change this setting. + + + + + + backtrace_functions (string) + + backtrace_functions configuration parameter + + + + + This parameter contains a comma-separated list of C function names. + If an error is raised and the name of the internal C function where + the error happens matches a value in the list, then a backtrace is + written to the server log together with the error message. This can + be used to debug specific areas of the source code. + + + + Backtrace support is not available on all platforms, and the quality + of the backtraces depends on compilation options. + + + + This parameter can only be set by superusers. @@ -10103,6 +10504,31 @@ LOG: CleanUpLock: deleting: lock(0xb7acd844) id(24688,24696,0,0,0,1) + + ignore_invalid_pages (boolean) + + ignore_invalid_pages configuration parameter + + + + + If set to off (the default), detection of + WAL records having references to invalid pages during + recovery causes PostgreSQL to + raise a PANIC-level error, aborting the recovery. Setting + ignore_invalid_pages to on + causes the system to ignore invalid page references in WAL records + (but still report a warning), and continue the recovery. + This behavior may cause crashes, data loss, + propagate or hide corruption, or other serious problems. + However, it may allow you to get past the PANIC-level error, + to finish the recovery, and to cause the server to start up. + The parameter can only be set at server start. It only has effect + during recovery or in standby mode. + + + + jit_debugging_support (boolean) @@ -10204,6 +10630,8 @@ LOG: CleanUpLock: deleting: lock(0xb7acd844) id(24688,24696,0,0,0,1)
Clé d'option courte + + Option courte diff --git a/postgresql/contrib.xml b/postgresql/contrib.xml index b0d0a558a..ce5a4ec1d 100644 --- a/postgresql/contrib.xml +++ b/postgresql/contrib.xml @@ -53,8 +53,7 @@ Beaucoup de ces modules fournissent de nouvelles fonctions, de nouveaux opérateurs ou types utilisateurs. Pour pouvoir utiliser un de ces modules, après avoir installé le code, il faut enregistrer les - nouveaux objets SQL dans la base de données. À partir de - PostgreSQL, cela se fait en exécutant la + nouveaux objets SQL dans la base de données. Cela se fait en exécutant la commande . Dans une base de données neuve, vous pouvez simplement faire : @@ -64,7 +63,7 @@ CREATE EXTENSION nom_module; - Cette commande doit être exécutée par un superutilisateur. Cela enregistre + Cette commande enregistre de nouveaux objets SQL dans la base de données courante, donc vous avez besoin d'exécuter cette commande dans chaque base de données où vous souhaitez l'utiliser. Autrement, exécutez-la dans la base de données @@ -72,6 +71,16 @@ CREATE EXTENSION nom_module; de données créées après. + + For all these modules, CREATE EXTENSION must be run + by a database superuser, unless the module is + considered trusted, in which case it can be run by any + user who has CREATE privilege on the current + database. Modules that are trusted are identified as such in the + sections that follow. Generally, trusted modules are ones that cannot + provide access to outside-the-database functionality. + + Beaucoup de modules vous permettent d'installer leurs objets dans le schéma de votre choix. Pour cela, ajoutez SCHEMA @@ -80,22 +89,6 @@ CREATE EXTENSION nom_module; de création par défaut, qui est par défaut public. - - Si votre base de données a été mise à jour par une sauvegarde puis un - rechargement à partir d'une version antérieure à la 9.1 et que vous avez - utilisé la version antérieure du module, vous devez utiliser à la place - - -CREATE EXTENSION nom_module FROM unpackaged; - - - Ceci mettra à jour les objets pré-9.1 du module dans une - extension propre. Les prochaines mises à jour du - module seront gérées par . Pour plus - d'informations sur les mises à jour d'extensions, voir - . - - Néanmoins, notez que certains de ces modules ne sont pas des extensions dans ce sens, mais sont chargés sur le serveur diff --git a/postgresql/cube.xml b/postgresql/cube.xml index 84dd6ff7a..177f404bf 100644 --- a/postgresql/cube.xml +++ b/postgresql/cube.xml @@ -11,6 +11,12 @@ représenter des cubes à plusieurs dimensions. + + This module is considered trusted, that is, it can be + installed by non-superusers who have CREATE privilege + on the current database. + + Syntaxe @@ -106,115 +112,112 @@ Utilisation - affiche les opérateurs fournis par le - type cube. + affiche les opérateurs spécialisés + fournis par le type cube.
Opérateurs pour cube - + - Opérateur - Résultat - Description + + Operator + + + Description + - a = b - boolean - Les cubes a et b sont identiques. - - - - a && b - boolean - Les cubes a et b se chevauchent. - - - - a @> b - boolean - Le cube a contient le cube b. - - - - a <@ b - boolean - Le cube a est contenu dans le cube b. - - - - a < b - boolean - Le cube a est inférieur au cube b. + + cube && cube + boolean + + + Do the cubes overlap? + - a <= b - boolean - Le cube a est inférieur au égal au cube b. + + cube @> cube + boolean + + + Does the first cube contain the second? + - a > b - boolean - Le cube a est plus grand que le cube b. + + cube <@ cube + boolean + + + Is the first cube contained in the second? + - a >= b - boolean - Le cube a est plus grand ou égam au cube b. + + cube -> integer + float8 + + + Extracts the n-th coordinate of the cube + (counting from 1). + - a <> b - boolean - Le cube a est différent du cube b. + + cube ~> integer + float8 + + + Extracts the n-th coordinate of the cube, + counting in the following way: n = 2 + * k - 1 means lower bound + of k-th dimension, n = 2 + * k means upper bound of + k-th dimension. Negative + n denotes the inverse value of the corresponding + ositive coordinate. This operator is designed for KNN-GiST support. + - a -> n - float8 - Obtient la n-ième coordonnée du cube - (compteur à partir de 1). + + cube <-> cube + float8 + + + Computes the Euclidean distance between the two cubes. + - a ~> n - float8 - - Obtient la n-ième coordonnée du cube de la - façon suivante : n = 2 * k - 1 signifie la limite basse de la - k-ième dimension, n = 2 * k signifie la - limite haute de la k-ième dimension. Une - valeur négative pour n indique la valeur - inverse de la coordonnée positive correspondante. Cet opérateur est - conçu pour le support de KNN-GiST. - + + cube <#> cube + float8 + + + Computes the taxicab (L-1 metric) distance between the two cubes. + - a <-> b - float8 - Distance euclidienne entre a et b. + + cube <=> cube + float8 + + + Computes the Chebyshev (L-inf metric) distance between the two cubes. + - - - a <#> b - float8 - Distance Taxicab (métrique L-1) entre a et b. - - - - a <=> b - float8 - Distance Chebyshev (métrique L-inf) entre a et b. - -
@@ -229,14 +232,15 @@
- Les opérateurs d'ordre scalaire (<, - >=, etc) n'ont pas réellement de sens pour tout sens - pratique en dehors de tri. Ces opérateurs comparent tout d'abord les + In addition to the above operators, the usual comparison + operators shown in are + available for type cube. Ces opérateurs comparent tout d'abord les premiers coordonnées et, si ces derniers sont égaux, comparent les deuxièmes coordonnées. Ils existent principalement pour supporter la classe d'opérateur d'index b-tree pour cube, qui peut seulement être utile par exemple si vous souhaitez une contrainte UNIQUE sur une colonne cube. + Otherwise, this ordering is not of much practical use. @@ -282,199 +286,269 @@ SELECT c FROM test ORDER BY c ~> 3 DESC LIMIT 5; Fonctions cube - - - - Fonction - Résultat - Description - Exemple - - - - - - cube(float8) - cube - Crée un cube uni-dimensionnel de coordonnées identiques. - - - cube(1) == '(1)' - - - - - cube(float8, float8) - cube - Crée un cube uni-dimensionnel. - - - cube(1,2) == '(1),(2)' - - - - - cube(float8[]) - cube - Crée un cube de volume nul en utilisant les coordonnées - définies par le tableau. - - - cube(ARRAY[1,2]) == '(1,2)' - - - - - cube(float8[], float8[]) - cube - Crée un cube avec les coordonnées haut droit et - bas gauche définies par deux tableaux de flottants, obligatoirement - de même taille. - - - cube(ARRAY[1,2], ARRAY[3,4]) == '(1,2),(3,4)' - - - - - - cube(cube, float8) - cube - Créer un nouveau cube en ajoutant une dimension à un cube - existant, avec les mêmes valeurs pour les deux points finaux de la - nouvelle coordonnée. Ceci est utile pour construire des cubes pièce par - pièce à partir des valeurs calculées. - - - cube('(1,2),(3,4)'::cube, 5) == '(1,2,5),(3,4,5)' - - - - - cube(cube, float8, float8) - cube - Crée un nouveau cube en ajoutant une dimension à un cube existant. - Ceci est utile pour construire des cubes pièce par pièce à partir de - valeurs calculées. - - - cube('(1,2),(3,4)'::cube, 5, 6) == '(1,2,5),(3,4,6)' - - - - - cube_dim(cube) - integer - Renvoie le nombe de dimensions du cube. - - - cube_dim('(1,2),(3,4)') == '2' - - - - - cube_ll_coord(cube, integer) - float8 - Renvoie la n-ième coordonnée pour le - coin bas gauche du cube. - - - cube_ll_coord('(1,2),(3,4)', 2) == '2' - - - - - cube_ur_coord(cube, integer) - float8 - Renvoie la n-ième valeur de coordonnée - pour le coin haut à droite du cube. - - - cube_ur_coord('(1,2),(3,4)', 2) == '4' - - - - - cube_is_point(cube) - boolean - Renvoie true si le cube est un point, autrement dit si - les deux coins de définition sont identiques. - - - - - - cube_distance(cube, cube) - float8 - Renvoie la distance entre deux cubes. Si les deux cubes sont des - points, il s'agit de la fonction de distance habituelle. - - - - - - - cube_subset(cube, integer[]) - cube - Crée un nouveau cube à partir d'un cube existant, en utilisant - une liste d'index de dimension à partir d'un tableau. Peut être utilisé - pour extraire les points finaux d'une seule dimension ou pour supprimer - les dimensions ou pour les réordonner comme souhaité. - - - cube_subset(cube('(1,3,5),(6,7,8)'), ARRAY[2]) == '(3),(7)' - cube_subset(cube('(1,3,5),(6,7,8)'), ARRAY[3,2,1,1]) == - '(5,3,1,1),(8,7,6,6)' - - - - - cube_union(cube, cube) - cube - Produit l'union de deux cubes. - - - - - - - cube_inter(cube, cube) - cube - Produit l'intersection de deux cubes. - - - - - - - cube_enlarge(c cube, r double, n integer) - cube - Augmente la taille du cube suivant le radius - r spécifié sur au moins - n dimensions. Si le radius est négatif, le - cube est réduit. Toutes les dimensions définies sont modifiées par le - radius r. Les coordonnées bas-gauche sont - réduites de r et les coordonnées haut-droite - sont augmentées de r. Si une coordonnée bas- - gauche est augmentée suffisamment pour être plus importante que la - coordonnées haute-droite (ceci peut seulement survenir quand - r < 0), alors les deux coordonnées sont - configurées avec leur moyenne. Si n est - supérieur au nombre de dimensions définies et que le cube est grossi - (r > 0), alors les dimensions - supplémentaires sont ajoutées pour tout - n ; 0 est utilisé comme valeur initiale - pour les coordonnées supplémentaires. Cette fonction est utile pour - créer les bounding boxes autour d'un point permettant de - chercher les points les plus proches. - - - cube_enlarge('(1,2),(3,4)', 0.5, 3) == - '(0.5,1.5,-0.5),(3.5,4.5,0.5)' - - - - + + + + + Fonction + + + Description + + + Exemple(s) + + + + + + + + cube ( float8 ) + cube + + + Crée un cube uni-dimensionnel de coordonnées identiques. + + + cube(1) + (1) + + + + + + cube ( float8, float8 ) + cube + + + Crée un cube uni-dimensionnel. + + + cube(1,2) + (1),(2) + + + + + + cube ( float8[] ) + cube + + + Crée un cube de volume nul en utilisant les coordonnées + définies par le tableau. + + + cube(ARRAY[1,2,3]) + (1, 2, 3) + + + + + + cube ( float8[], float8[] ) + cube + + + Crée un cube avec les coordonnées haut droit et + bas gauche définies par deux tableaux de flottants, obligatoirement + de même taille. + + + cube(ARRAY[1,2], ARRAY[3,4]) + (1, 2),(3, 4) + + + + + + cube ( cube, float8 ) + cube + + + Crée un nouveau cube en ajoutant une dimension à un cube + existant, avec les mêmes valeurs pour les deux points finaux de la + nouvelle coordonnée. Ceci est utile pour construire des cubes pièce par + pièce à partir de valeurs calculées. + + + cube('(1,2),(3,4)'::cube, 5) + (1, 2, 5),(3, 4, 5) + + + + + + cube ( cube, float8, float8 ) + cube + + + Crée un nouveau cube en ajoutant une dimension à un cube existant. + Ceci est utile pour construire des cubes pièce par pièce à partir de + valeurs calculées. + + + cube('(1,2),(3,4)'::cube, 5, 6) + (1, 2, 5),(3, 4, 6) + + + + + + cube_dim ( cube ) + integer + + + Renvoie le nombe de dimensions du cube. + + + cube_dim('(1,2),(3,4)') + 2 + + + + + + cube_ll_coord ( cube, integer ) + float8 + + + Renvoie la n-ième valeur de coordonnée pour + le coin bas gauche du cube. + + + cube_ll_coord('(1,2),(3,4)', 2) + 2 + + + + + + cube_ur_coord ( cube, integer ) + float8 + + + Renvoie la n-ième valeur de coordonnée pour + le coin haut droite du cube. + + + cube_ur_coord('(1,2),(3,4)', 2) + 4 + + + + + + cube_is_point ( cube ) + boolean + + + Renvoie true si le cube est un point, autrement dit si + les deux coins de définition sont identiques. + + + cube_is_point(cube(1,1)) + t + + + + + + cube_distance ( cube, cube ) + float8 + + + Renvoie la distance entre deux cubes. Si les deux cubes sont des + points, il s'agit de la fonction de distance habituelle. + + + cube_distance('(1,2)', '(3,4)') + 2.8284271247461903 + + + + + + cube_subset ( cube, integer[] ) + cube + + + Crée un nouveau cube à partir d'un cube existant, en utilisant + une liste d'index de dimension à partir d'un tableau. Peut être utilisé + pour extraire les points finaux d'une seule dimension ou pour supprimer + les dimensions, ou pour les réordonner comme souhaité. + + + cube_subset(cube('(1,3,5),(6,7,8)'), ARRAY[2]) + (3),(7) + + + cube_subset(cube('(1,3,5),(6,7,8)'), ARRAY[3,2,1,1]) + (5, 3, 1, 1),(8, 7, 6, 6) + + + + + + cube_union ( cube, cube ) + cube + + + Produit l'union de deux cubes. + + + cube_union('(1,2)', '(3,4)') + (1, 2),(3, 4) + + + + + + cube_inter ( cube, cube ) + cube + + + Produit l'intersection de deux cubes. + + + cube_inter('(1,2)', '(3,4)') + (3, 4),(1, 2) + + + + + + cube_enlarge ( c cube, r double, n integer ) + cube + + + Augmente la taille du cube suivant le radius + r spécifié sur au moins + n dimensions. Si le radius est négatif, le + cube est réduit. Toutes les dimensions définies sont modifiées par le + radius r. Les coordonnées bas-gauche sont + réduites de r et les coordonnées haut-droite + sont augmentées de r. Si une coordonnée bas- + gauche est augmentée suffisamment pour être plus importante que la + coordonnée haute-droite (ceci peut seulement survenir quand + r < 0), alors les deux coordonnées sont + configurées avec leur moyenne. Si n est + supérieur au nombre de dimensions définies et que le cube est grossi + (r > 0), alors les dimensions + supplémentaires sont ajoutées pour tout + n ; 0 est utilisé comme valeur initiale + pour les coordonnées supplémentaires. Cette fonction est utile pour + créer les bounding boxes autour d'un point permettant de + chercher les points les plus proches. + + + cube_enlarge('(1,2),(3,4)', 0.5, 3) + (0.5, 1.5, -0.5),(3.5, 4.5, 0.5) + + + +
diff --git a/postgresql/datatype.xml b/postgresql/datatype.xml index 21ab294d1..0420bd541 100644 --- a/postgresql/datatype.xml +++ b/postgresql/datatype.xml @@ -35,7 +35,7 @@ - + Nom @@ -205,6 +205,12 @@ Séquence numérique de journal (Log Sequence Number) de PostgreSQL + + pg_snapshot + + user-level transaction ID snapshot + + point @@ -286,7 +292,8 @@ txid_snapshot - image de l'identifiant de transaction au niveau utilisateur + image de l'identifiant de transaction au niveau utilisateur + (deprecated; see pg_snapshot) @@ -350,10 +357,10 @@ Types numériques - - - - + + + + Nom @@ -994,10 +1001,10 @@ ALTER SEQUENCE nom_de_table_ Types monétaires - - - - + + + + Nom @@ -1355,7 +1362,7 @@ SELECT b, char_length(b) FROM test2; Types de données binaires - + @@ -1473,6 +1480,11 @@ SELECT '\xDEADBEEF';
Octets littéraux <type>bytea</type> à échapper + + + + + Valeur décimale de l'octet @@ -1488,7 +1500,7 @@ SELECT '\xDEADBEEF'; 0 octet zéro '\000' - SELECT '\000'::bytea; + '\000'::bytea; \x00 @@ -1496,7 +1508,7 @@ SELECT '\xDEADBEEF'; 39apostrophe'''' ou '\047' - SELECT ''''::bytea; + ''''::bytea;\x27 @@ -1504,7 +1516,7 @@ SELECT '\xDEADBEEF'; 92antislash'\\' or '\134' - SELECT '\\'::bytea; + '\\'::bytea;\x5c @@ -1512,7 +1524,7 @@ SELECT '\xDEADBEEF'; de 0 à 31 et de 127 à 255octets non affichables'\xxx' (valeur octale) - SELECT '\001'::bytea; + '\001'::bytea;\x01 @@ -1571,6 +1583,11 @@ SELECT 'abc \153\154\155 \052\251\124'::bytea;
Octets échappés en sortie pour <type>bytea</type> + + + + + Valeur décimale de l'octet @@ -1587,7 +1604,7 @@ SELECT 'abc \153\154\155 \052\251\124'::bytea; 92 antislash \\ - SELECT '\134'::bytea; + '\134'::bytea; \\ @@ -1595,7 +1612,7 @@ SELECT 'abc \153\154\155 \052\251\124'::bytea; 0 à 31 et 127 à 255octetsnon affichables\xxx (valeur octale) - SELECT '\001'::bytea; + '\001'::bytea;\001 @@ -1603,7 +1620,7 @@ SELECT 'abc \153\154\155 \052\251\124'::bytea; 32 à 126octets affichablesReprésentation dans le jeu de caractères du client - SELECT '\176'::bytea; + '\176'::bytea;~ @@ -1843,7 +1860,7 @@ SELECT 'abc \153\154\155 \052\251\124'::bytea; Saisie de date - + Exemple @@ -1967,8 +1984,8 @@ SELECT 'abc \153\154\155 \052\251\124'::bytea;
Saisie d'heure - - + + Exemple @@ -2322,6 +2339,9 @@ SELECT 'abc \153\154\155 \052\251\124'::bytea;
Styles d'affichage de date/heure + + + @@ -2384,6 +2404,9 @@ SELECT 'abc \153\154\155 \052\251\124'::bytea;
Convention de présentation des dates + + + Valeur de datestyle (style de date) @@ -2815,23 +2838,23 @@ P années-mois- - 1-2 + 1-2 Format SQL standard : 1 an 2 mois - 3 4:05:06 + 3 4:05:06 Format SQL standard : 3 jours 4 heures 5 minutes 6 secondes - 1 year 2 months 3 days 4 hours 5 minutes 6 seconds + 1 year 2 months 3 days 4 hours 5 minutes 6 seconds Format PostgreSQL traditionnel : 1 an 2 mois 3 jours 4 heures 5 minutes 6 secondes - P1Y2M3DT4H5M6S + P1Y2M3DT4H5M6S format avec désignateurs ISO 8601 : signification identique à ci-dessus - P0001-02-03T04:05:06 + P0001-02-03T04:05:06 format alternatif ISO 8601 : signification identique à ci-dessus @@ -2950,7 +2973,7 @@ SELECT EXTRACT(days from '80 hours'::interval); iso_8601P1Y2MP3DT4H5M6S - P-1Y-2M3DT-4H-5M-6S + P-1Y-2M3DT-4H-5M-6S @@ -3257,10 +3280,10 @@ SELECT personne.nom, vacances.nombre_de_semaines FROM personne, vacances
Types géométriques - - - - + + + + Nom @@ -3579,6 +3602,9 @@ SELECT personne.nom, vacances.nombre_de_semaines FROM personne, vacances
Types d'adresses réseau + + + Nom @@ -3649,8 +3675,8 @@ SELECT personne.nom, vacances.nombre_de_semaines FROM personne, vacances adresse/yadresse - est une adresse IPv4 ou IPv6 et - y + est l'adresse la plus basse du réseau en IPv4 ou en IPv6 + et y est le nombre de bits du masque réseau. Si y est omis, alors le masque vaut 32 pour IPv4 et @@ -3762,12 +3788,12 @@ SELECT personne.nom, vacances.nombre_de_semaines FROM personne, vacances 2001:4f8:3:ba::/64 2001:4f8:3:ba::/64 - 2001:4f8:3:ba::/64 + 2001:4f8:3:ba/64 - 2001:4f8:3:ba:2e0:81ff:fe22:d1f1/128 - 2001:4f8:3:ba:2e0:81ff:fe22:d1f1/128 - 2001:4f8:3:ba:2e0:81ff:fe22:d1f1 + 2001:4f8:3:ba:&zwsp;2e0:81ff:fe22:d1f1/128 + 2001:4f8:3:ba:&zwsp;2e0:81ff:fe22:d1f1/128 + 2001:4f8:3:ba:&zwsp;2e0:81ff:fe22:d1f1/128 ::ffff:1.2.3.0/120 @@ -3908,10 +3934,14 @@ opposition de deux choses --> minuscules sont acceptées pour les caractères de a jusqu'à f. La sortie sera toujours au même format que le premier exemple. + + Les six derniers formats en entrée qui sont mentionnés au-dessus ne font partie d'aucun standard. + + Pour convertir une adresse MAC traditionnelle de 48 bits au format EUI-48 vers le format modifié EUI-64 pour pouvoir être incluse dans la partie hôte d'une adresse IPv6, utilisez @@ -4315,14 +4345,8 @@ a0ee-bc99-9c0b-4ef8-bb6d-6bb9-bd38-0a11 - Pour générer des UUID, le module - fournit des fonctions qui implémentent - les algorithmes standards. - Le module fournit également une fonction de - génération d'UUID aléatoires. - Sinon, les UUID - peuvent être générés par des applications clientes ou par d'autres - bibliothèques appelées par une fonction serveur. + See for how to generate a UUID in + PostgreSQL. @@ -4606,11 +4630,23 @@ INSERT INTO mytable VALUES(-1); -- fails - regproc + regclass - regprocedure + regcollation + + + + regconfig + + + + regdictionary + + + + regnamespace @@ -4622,23 +4658,23 @@ INSERT INTO mytable VALUES(-1); -- fails - regclass + regproc - regtype + regprocedure - regconfig + regrole - regdictionary + regtype - xid + xid8 @@ -4649,15 +4685,17 @@ INSERT INTO mytable VALUES(-1); -- fails tid + + xid + + Les identifiants d'objets (OID) sont utilisés en interne par PostgreSQL comme clés primaires de différentes tables système. Le type oid représente un identifiant d'objet. Il existe aussi différents types alias pour un - oid : regproc, regprocedure, - regoper, regoperator, regclass, - regtype, regrole, regnamespace, - regconfig et regdictionary. Le oid nommés + regquelquechose. Le en donne un aperçu. @@ -4725,17 +4763,38 @@ WHERE attrelid = (SELECT oid FROM pg_class WHERE relname = 'ma_table'); - regproc - pg_proc - nom de fonction - sum + regclass + pg_class + relation name + pg_type - regprocedure - pg_proc - fonction avec types d'arguments - sum(int4) + regcollation + pg_collation + collation name + "POSIX" + + + + regconfig + pg_ts_config + text search configuration + english + + + + regdictionary + pg_ts_dict + text search dictionary + simple + + + + regnamespace + pg_namespace + namespace name + pg_catalog @@ -4749,21 +4808,22 @@ WHERE attrelid = (SELECT oid FROM pg_class WHERE relname = 'ma_table');regoperator pg_operator opérateur avec types d'arguments - *(integer,integer) ou -(NONE,integer) + *(integer,&zwsp;integer) + ou -(NONE,&zwsp;integer) - regclass - pg_class - nom de relation - pg_type + regproc + pg_proc + function name + sum - regtype - pg_type - nom de type de données - integer + regprocedure + pg_proc + function with argument types + sum(int4) @@ -4774,24 +4834,10 @@ WHERE attrelid = (SELECT oid FROM pg_class WHERE relname = 'ma_table'); - regnamespace - pg_namespace - nom de schéma - pg_catalog - - - - regconfig - pg_ts_config - configuration de la recherche plein texte - english - - - - regdictionary - pg_ts_dict - dictionnaire de la recherche plein texte - simple + regtype + pg_type + data type name + integer @@ -4839,6 +4885,9 @@ WHERE attrelid = (SELECT oid FROM pg_class WHERE relname = 'ma_table');xmin et xmax. Les identifiants de transactions sont stockés sur 32 bits. + In some contexts, a 64-bit variant xid8 is used. Unlike + xid values, xid8 values increase strictly + monotonically and cannot be reused in the lifetime of a database cluster. @@ -4863,7 +4912,7 @@ WHERE attrelid = (SELECT oid FROM pg_class WHERE relname = 'ma_table'); - <acronym>pg_lsn Type</acronym> + Type <acronym>pg_lsn</acronym> pg_lsn @@ -4921,6 +4970,22 @@ WHERE attrelid = (SELECT oid FROM pg_class WHERE relname = 'ma_table');anyrange + + anycompatible + + + + anycompatiblearray + + + + anycompatiblenonarray + + + + anycompatiblerange + + void @@ -4949,6 +5014,10 @@ WHERE attrelid = (SELECT oid FROM pg_class WHERE relname = 'ma_table');fdw_handler + + table_am_handler + + index_am_handler @@ -4969,10 +5038,6 @@ WHERE attrelid = (SELECT oid FROM pg_class WHERE relname = 'ma_table');unknown - - opaque - - Le système de types de PostgreSQL contient un certain nombre de types à usage spécial qui sont @@ -4989,7 +5054,7 @@ WHERE attrelid = (SELECT oid FROM pg_class WHERE relname = 'ma_table');Pseudo-Types - + Nom @@ -5040,6 +5105,35 @@ WHERE attrelid = (SELECT oid FROM pg_class WHERE relname = 'ma_table');). + + anycompatible + Indicates that a function accepts any data type, + with automatic promotion of multiple arguments to a common data type + (see ). + + + + anycompatiblearray + Indicates that a function accepts any array data type, + with automatic promotion of multiple arguments to a common data type + (see ). + + + + anycompatiblenonarray + Indicates that a function accepts any non-array data type, + with automatic promotion of multiple arguments to a common data type + (see ). + + + + anycompatiblerange + Indicates that a function accepts any range data type, + with automatic promotion of multiple arguments to a common data type + (see and + ). + + cstring Indique qu'une fonction accepte ou retourne une chaîne de caractères @@ -5064,6 +5158,11 @@ WHERE attrelid = (SELECT oid FROM pg_class WHERE relname = 'ma_table');fdw_handler. + + table_am_handler + A table access method handler is declared to return table_am_handler. + + index_am_handler Un gestionnaire pour une méthode d'accès d'index est déclaré @@ -5109,12 +5208,6 @@ WHERE attrelid = (SELECT oid FROM pg_class WHERE relname = 'ma_table');Identifie un type non encore résolu, par exemple une chaîne de texte non décorée. - - - opaque - Un type de données obsolète qui servait précédemment pour - beaucoup des usages cités ci-dessus. -
@@ -5135,9 +5228,8 @@ WHERE attrelid = (SELECT oid FROM pg_class WHERE relname = 'ma_table');trigger ou event_trigger lorsque la fonction est utilisée respectivement comme trigger ou triggers d'événement). Certains supportent également les fonctions polymorphes qui utilisent les - types anyelement, - anyarray, anynonarray, anyenum et - anyrange. + polymorphic pseudo-types, which are shown above and discussed + in detail in . diff --git a/postgresql/datetime.xml b/postgresql/datetime.xml index 8c06e8260..dc99c875b 100644 --- a/postgresql/datetime.xml +++ b/postgresql/datetime.xml @@ -184,7 +184,7 @@ - Les années du calendrier Grégorien AD 1-99 peuvent être saisie avec 4 + Les années du calendrier Grégorien AD 1–99 peuvent être saisie avec 4 chiffres, deux zéros en tête (0099 pour AD 99, par exemple). @@ -694,9 +694,9 @@ di lu ma me je ve sa type de calendrier, non relatif au calendrier Julien, malgré la similarité du nom. Le système de date Julien a été inventé par le précepteur - français Joseph Justus Scaliger (1540-1609) et tient probablement son nom + français Joseph Justus Scaliger (1540–1609) et tient probablement son nom du père de Scaliger, le précepteur italien Julius Caesar Scaliger - (1484-1558). Dans le système de date Julien, chaque jour est un nombre + (1484–1558). Dans le système de date Julien, chaque jour est un nombre séquentiel, commençant à partir de JD 0, appelé quelque fois la date Julien. JD 0 correspond au 1er janvier 4713 avant JC dans le calendrier Julien, ou au 24 novembre 4714 avant JC diff --git a/postgresql/dblink.xml b/postgresql/dblink.xml index 9f4ee41c9..3ab1296c5 100644 --- a/postgresql/dblink.xml +++ b/postgresql/dblink.xml @@ -156,7 +156,6 @@ SELECT dblink_connect('dbname=postgres options=-csearch_path='); -- cela fonctionne correctement -- Sinon, vous recevrez le message d'erreur suivant provenant de -- dblink_connect() : - -- ---------------------------------------------------------------------- -- ERROR: password is required -- DETAIL: Non-superuser cannot connect if the server does not request a password. -- HINT: Target server's authentication method must be changed. diff --git a/postgresql/ddl.xml b/postgresql/ddl.xml index ab6bab05d..88d288140 100644 --- a/postgresql/ddl.xml +++ b/postgresql/ddl.xml @@ -1648,7 +1648,10 @@ ALTER TABLE produits ADD FOREIGN KEY (id_groupe_produit) REFERENCES groupes_prod - Le droit de modifier ou de détruire un objet est le privilège du seul propriétaire. + The right to modify or destroy an object is inherent in being the + object's owner, and cannot be granted or revoked in itself. + (However, like all privileges, that right can be inherited by + members of the owning role; see .) @@ -1684,16 +1687,9 @@ ALTER TABLE nom_table OWNER TO nouveau_p - Pour révoquer un privilège, on utilise la commande bien nommée + Pour révoquer un privilège précédemment donné, on utilise la commande bien nommée , comme dans l'exemple ci-dessous : REVOKE ALL ON comptes FROM PUBLIC; - Les privilèges spéciaux du propriétaire de l'objet (c'est-à-dire le droit - d'exécuter DROP, GRANT, - REVOKE, etc.) appartiennent toujours implicitement au - propriétaire. Ils ne peuvent être ni - accordés ni révoqués. Mais le propriétaire de l'objet peut choisir - de révoquer ses propres droits ordinaires pour, par exemple, mettre - une table en lecture seule pour lui-même et pour les autres. @@ -1709,6 +1705,13 @@ ALTER TABLE nom_table OWNER TO nouveau_p . + + An object's owner can choose to revoke their own ordinary privileges, + for example to make a table read-only for themselves as well as others. + But owners are always treated as holding all grant options, so they + can always re-grant their own privileges. + + Les privilèges disponibles sont : @@ -1812,7 +1815,8 @@ ALTER TABLE nom_table OWNER TO nouveau_p Pour les bases de données, autorise la création de nouveaux schémas - et publications dans la base. + et publications dans la base, and allows trusted extensions to be installed within + the database. Pour les schémas, autorise la création de nouveaux objets dans le @@ -1824,7 +1828,10 @@ ALTER TABLE nom_table OWNER TO nouveau_p Pour les tablespaces, permet de créer des tables, index et fichiers temporaires dans le tablespace, et de créer des bases de données - ayant ce tablespace comme tablespace par défaut. (Notez que révoquer + ayant ce tablespace comme tablespace par défaut. + + + Notez que révoquer ce privilège ne modifiera pas l'emplacement des objets.) @@ -1956,6 +1963,9 @@ ALTER TABLE nom_table OWNER TO nouveau_p Abréviations des privilèges dans les ACL + + + Privilège @@ -2061,6 +2071,10 @@ ALTER TABLE nom_table OWNER TO nouveau_p
Résumé des privilèges d'accès + + + + Type d'objet @@ -3502,15 +3516,7 @@ VALUES ('Albany', NULL, NULL, 'NY'); sont accédées via la table villes. Ceci préserve l'apparence que les données proviennent (aussi) de la table parent. Mais la table capitales ne pouvait pas être mise à jour - directement sans droit supplémentaire. Deux exceptions à - cette règle sont TRUNCATE et LOCK - TABLE, où les droits sur les tables filles sont toujours - vérifiées qu'elles soient traitées directement ou par récursivité via les - commandes réalisées sur la table parent. - - - - De façon similaire, les politiques + directement sans droit supplémentaire. De façon similaire, les politiques de sécurité au niveau ligne de la table parent (voir ) sont appliquées aux lignes provenant des tables filles avec une requête héritée. Les politiques de tables enfant diff --git a/postgresql/dict-int.xml b/postgresql/dict-int.xml index af8d9956b..80652375f 100644 --- a/postgresql/dict-int.xml +++ b/postgresql/dict-int.xml @@ -15,10 +15,16 @@ grandement la performance de la recherche. + + This module is considered trusted, that is, it can be + installed by non-superusers who have CREATE privilege + on the current database. + + Configuration - Le dictionnaire accepte deux options : + Le dictionnaire accepte trois options : @@ -42,6 +48,15 @@ pas être recherché. + + + The absval parameter specifies whether leading + + or - + signs should be removed from integer words. The default + is false. When true, the sign is + removed before maxlen is applied. + + diff --git a/postgresql/docguide.xml b/postgresql/docguide.xml index b1b46e834..6d96eb6a9 100644 --- a/postgresql/docguide.xml +++ b/postgresql/docguide.xml @@ -91,7 +91,7 @@ Il s'agit de la définition de DocBook elle-même. C'est actuellement la - version 4.2 qui est utilisée. Vous avez besoin de la variante + version 4.5 qui est utilisée. Vous avez besoin de la variante XML de la DTD DocBook, et non pas SGML, de même version. Ils seront généralement dans des paquets séparés. @@ -227,7 +227,7 @@ pkg install docbook-xml docbook-xsl fop libxslt Si vous utilisez MacPorts, voici comment configurer cela : -sudo port install docbook-xml-4.2 docbook-xsl fop +sudo port install docbook-xml-4.5 docbook-xsl fop Si vous utilisez Homebrew, utilisez ceci : @@ -283,7 +283,7 @@ make install Récupérer la distribution DocBook + url="http://www.docbook.org/sgml/4.5/docbook-4.2.zip">DocBook V4.2. @@ -396,6 +396,13 @@ checking for fop... fop doc/src/sgml$ make STYLE=website html + + + If the STYLE=website option is used, the generated HTML + files include references to stylesheets hosted on postgresql.org and + require network access to view. + diff --git a/postgresql/earthdistance.xml b/postgresql/earthdistance.xml index 93fdb1b2c..8fb1245b9 100644 --- a/postgresql/earthdistance.xml +++ b/postgresql/earthdistance.xml @@ -28,6 +28,12 @@ doit être considéré.) + + This module is considered trusted, that is, it can be + installed by non-superusers who have CREATE privilege + on the current database. + + Distances sur Terre à partir de cubes @@ -68,74 +74,118 @@
Fonctions earthdistance par cubes - - - - Fonction - Retour - Description - - - - - earth()earth - float8 - Renvoie le rayon estimé de la Terre. - - - sec_to_gc(float8)sec_to_gc - float8 - Convertit la distance en ligne droite (sécant) entre deux - points à la surface de la Terre en distane circulaire. - - - - gc_to_sec(float8)gc_to_sec - float8 - Convertit la distance circulaire entre deux points à la surface - de la Terre en une distance en ligne droite (sécant). - - - - ll_to_earth(float8, float8)ll_to_earth - earth - Renvoie l'emplacement d'un point à la surface de la Terre étant - données sa latitude (argument 1) et sa longitude (argument 2) en degrés. - - - - latitude(earth)latitude - float8 - Renvoie la latitude en degrés d'un point à la surface de la - Terre. - - - - longitude(earth)longitude - float8 - Renvoie la longitude en degrés d'un point à la surface de la - Terre. - - - - earth_distance(earth, earth)earth_distance - float8 - Renvoie la distance circulaire entre deux points à la surface - de la Terre. - - - - earth_box(earth, float8)earth_box - cube - Renvoie une boîte autorisant une recherche par index avec - l'opérateur @> du type cube pour les - points situés au maximum à une distance circulaire donnée d'un - emplacement. Certains points de cette boîte sont plus éloignés que - la distance circulaire indiquée. Une deuxième vérification utilisant - earth_distance doit, donc, être incluse dans la requête. - - - + + + + + Fonction + + + Description + + + + + + + + earth + earth () + float8 + + + Renvoie le rayon estimé de la Terre. + + + + + + sec_to_gc + sec_to_gc ( float8 ) + float8 + + + Convertit la distance en ligne droite (sécant) entre deux + points à la surface de la Terre en distane circulaire. + + + + + + gc_to_sec + gc_to_sec ( float8 ) + float8 + + + Convertit la distance circulaire entre deux points à la surface + de la Terre en une distance en ligne droite (sécant). + + + + + + ll_to_earth + ll_to_earth ( float8, float8 ) + earth + + + Renvoie l'emplacement d'un point à la surface de la Terre étant + données sa latitude (argument 1) et sa longitude (argument 2) en degrés. + + + + + + latitude + latitude ( earth ) + float8 + + + Renvoie la latitude en degrés d'un point à la surface de la + Terre. + + + + + + longitude + longitude ( earth ) + float8 + + + Renvoie la longitude en degrés d'un point à la surface de la + Terre. + + + + + + earth_distance + earth_distance ( earth, earth ) + float8 + + + Renvoie la distance circulaire entre deux points à la surface + de la Terre. + + + + + + earth_box + earth_box ( earth, float8 ) + cube + + + Renvoie une boîte autorisant une recherche par index avec + l'opérateur @> du type cube pour les + points situés au maximum à une distance circulaire donnée d'un + emplacement. Certains points de cette boîte sont plus éloignés que + la distance circulaire indiquée. Une deuxième vérification utilisant + earth_distance doit, donc, être incluse dans la requête. + + +
@@ -160,24 +210,29 @@ Opérateurs earthdistance par points - - - - Opérateur - Retour - Description - - - - - - point <@> point - float8 - Donne la distance en miles entre deux points à la surface de - la Terre. - - - + + + + + Opérateur + + + Description + + + + + + + point <@> point + float8 + + + Donne la distance en miles entre deux points à la surface de + la Terre. + + +
diff --git a/postgresql/ecpg.xml b/postgresql/ecpg.xml index 5db1ea348..1203d90ad 100644 --- a/postgresql/ecpg.xml +++ b/postgresql/ecpg.xml @@ -1,6 +1,6 @@ - <application>ECPG</application> <acronym>SQL</acronym> embarqué en C + <application>ECPG</application> — <acronym>SQL</acronym> embarqué en C SQL embarquéen C C @@ -1038,7 +1038,7 @@ struct varchar_var { int len; char arr[180]; } var;
- timestamp, date + timestamp, date Voici une méthode pour manipuler des variables timestamp @@ -1201,7 +1201,7 @@ EXEC SQL END DECLARE SECTION; - bytea + bytea La gestion du type bytea est aussi similaire au type @@ -2997,7 +2997,7 @@ int PGTYPEStimestamp_fmt_asc(timestamp *ts, char *output, int str_len, char *fmt %d - est remplacé par le jour du mois sous forme de - nombre décimal (01-31). + nombre décimal (01–31). @@ -3033,7 +3033,7 @@ int PGTYPEStimestamp_fmt_asc(timestamp *ts, char *output, int str_len, char *fmt %e - est remplacé par le jour du mois comme nombre décimal - (1-31); les chiffres seuls sont précédés par un blanc. + (1–31) ; les chiffres seuls sont précédés par un blanc. @@ -3052,13 +3052,13 @@ int PGTYPEStimestamp_fmt_asc(timestamp *ts, char *output, int str_len, char *fmt %g - est remplacé par la même année que dans %G, mais comme un nombre décimal sans le siècle. - (00-99). + (00–99). %H - est remplacé par l'heure (horloge sur 24 heures) comme - nombre décimal (00-23). + nombre décimal (00–23). @@ -3069,37 +3069,37 @@ int PGTYPEStimestamp_fmt_asc(timestamp *ts, char *output, int str_len, char *fmt %I - est remplacé par l'heure (horloge sur 12 heures) comme - nombre décimal(01-12). + nombre décimal(01–12). %j - est remplacé par le jour de l'année comme - nombre décimal (001-366). + nombre décimal (001–366). %k - est remplacé par l'heure (horloge sur 24 heures) comme - nombre décimal (0-23); les chiffres seuls sont précédés par un blanc. + nombre décimal (0–23) ; les chiffres seuls sont précédés par un blanc. %l - est remplacé par l'heure (horloge sur 12 heures) comme - nombre décimal (1-12); les chiffres seuls sont précédés par un blanc. + nombre décimal (1–12) ; les chiffres seuls sont précédés par un blanc. %M - est remplacé par la minute comme - nombre décimal (00-59). + nombre décimal (00–59). %m - est remplacé par le mois comme nombre décimal - (01-12). + (01–12). @@ -3132,7 +3132,7 @@ int PGTYPEStimestamp_fmt_asc(timestamp *ts, char *output, int str_len, char *fmt %S - est remplacé par la seconde comme - nombre décimal (00-60). + nombre décimal (00–60). @@ -3154,19 +3154,20 @@ int PGTYPEStimestamp_fmt_asc(timestamp *ts, char *output, int str_len, char *fmt %U - est remplacé par le numéro de la semaine dans - l'année (Dimanche est le premier jour de la semaine) comme nombre décimal(00-53). + l'année (Dimanche est le premier jour de la semaine) comme nombre décimal + (00–53). %u - est remplacé par le jour de la semaine (Lundi comme - premier jour de la semaine) comme nombre décimal (1-7). + premier jour de la semaine) comme nombre décimal (1–7). %V - est remplacé par le numéro de la semaine dans l'année - (Lundi est le premier jour de la semaine) comme nombre décimal (01-53). + (Lundi est le premier jour de la semaine) comme nombre décimal (01–53). Si l'année contenant le 1er Janvier a 4 jours ou plus dans la nouvelle année, alors c'est la semaine numéro 1; sinon, c'est la dernière semaine de l'année précédente, et la semaine suivante est la semaine 1. @@ -3181,13 +3182,13 @@ int PGTYPEStimestamp_fmt_asc(timestamp *ts, char *output, int str_len, char *fmt %W - est remplacé par le numéro de la semaine dans l'année - (Lundi est le premier jour de la semaine) comme nombre décimal (00-53). + (Lundi est le premier jour de la semaine) comme nombre décimal (00–53). %w - est remplacé par le jour de la semaine (Dimanche comme - premier jour de la semaine) comme nombre décimal (0-6). + premier jour de la semaine) comme nombre décimal (0–6). @@ -3211,7 +3212,7 @@ int PGTYPEStimestamp_fmt_asc(timestamp *ts, char *output, int str_len, char *fmt %y - est remplacé par l'année sans le siècle comme - un nombre décimal (00-99). + un nombre décimal (00–99). @@ -5947,7 +5948,8 @@ ECPG = ecpg ECPGtransactionStatus(const char *nom_connexion) retourne l'état de la transaction courante de la connexion identifiée par nom_connexion. - Voyez et la fonction de la libpq PQtransactionStatus() pour les détails + Voyez et la fonction de la libpq + pour les détails à propos des codes d'état retournés. @@ -8299,7 +8301,7 @@ if (*(int2 *)sqldata->sqlvar[i].sqlind != 0) sqlformat - Réservé dans Informix, valeurs de PQfformat() pour le champ. + Réservé dans Informix, valeurs de pour le champ. @@ -8330,7 +8332,7 @@ if (*(int2 *)sqldata->sqlvar[i].sqlind != 0) sqlxid - Type étendu du champ, résultat de PQftype(). + Type étendu du champ, résultat de . diff --git a/postgresql/errcodes.xml b/postgresql/errcodes.xml index 42f89c006..bb0f63b97 100644 --- a/postgresql/errcodes.xml +++ b/postgresql/errcodes.xml @@ -72,8 +72,8 @@ Codes d'erreur de <productname>PostgreSQL</productname> - - + + diff --git a/postgresql/event-trigger.xml b/postgresql/event-trigger.xml index 4d7ecf747..d02fa4a66 100644 --- a/postgresql/event-trigger.xml +++ b/postgresql/event-trigger.xml @@ -142,13 +142,19 @@ Support des triggers sur évènement par commande + + + + + + Commande - ddl_command_start - ddl_command_end - sql_drop - table_rewrite + ddl_&zwsp;command_&zwsp;start + ddl_&zwsp;command_&zwsp;end + sql_&zwsp;drop + table_&zwsp;rewrite Notes @@ -159,7 +165,7 @@ X-- - + ALTER COLLATION @@ -167,7 +173,7 @@ X - - - + ALTER CONVERSION @@ -175,7 +181,7 @@ X - - - + ALTER DOMAIN @@ -183,7 +189,7 @@ X - - - + ALTER DEFAULT PRIVILEGES @@ -191,7 +197,7 @@ X - - - + ALTER EXTENSION @@ -199,7 +205,7 @@ X - - - + ALTER FOREIGN DATA WRAPPER @@ -207,7 +213,7 @@ X - - - + ALTER FOREIGN TABLE @@ -215,7 +221,7 @@ X X - - + ALTER FUNCTION @@ -223,7 +229,7 @@ X - - - + ALTER LANGUAGE @@ -231,7 +237,7 @@ X - - - + ALTER LARGE OBJECT @@ -239,7 +245,7 @@ X - - - + ALTER MATERIALIZED VIEW @@ -247,7 +253,7 @@ X - - - + ALTER OPERATOR @@ -255,7 +261,7 @@ X - - - + ALTER OPERATOR CLASS @@ -263,7 +269,7 @@ X - - - + ALTER OPERATOR FAMILY @@ -271,7 +277,7 @@ X - - - + ALTER POLICY @@ -279,7 +285,7 @@ X - - - + ALTER PROCEDURE @@ -287,7 +293,7 @@ X - - - + ALTER PUBLICATION @@ -295,7 +301,7 @@ X - - - + ALTER SCHEMA @@ -303,7 +309,7 @@ X - - - + ALTER SEQUENCE @@ -311,7 +317,7 @@ X - - - + ALTER SERVER @@ -319,7 +325,7 @@ X - - - + ALTER STATISTICS @@ -327,7 +333,7 @@ X - - - + ALTER SUBSCRIPTION @@ -335,7 +341,7 @@ X - - - + ALTER TABLE @@ -343,7 +349,7 @@ X X X - + ALTER TEXT SEARCH CONFIGURATION @@ -351,7 +357,7 @@ X - - - + ALTER TEXT SEARCH DICTIONARY @@ -359,7 +365,7 @@ X - - - + ALTER TEXT SEARCH PARSER @@ -367,7 +373,7 @@ X - - - + ALTER TEXT SEARCH TEMPLATE @@ -375,7 +381,7 @@ X - - - + ALTER TRIGGER @@ -383,7 +389,7 @@ X - - - + ALTER TYPE @@ -391,7 +397,7 @@ X - X - + ALTER USER MAPPING @@ -399,7 +405,7 @@ X - - - + ALTER VIEW @@ -407,7 +413,7 @@ X - - - + COMMENT @@ -415,7 +421,7 @@ X - - - Seulement pour les objets locaux + Seulement pour les objets locaux CREATE ACCESS METHOD @@ -423,7 +429,7 @@ X - - - + CREATE AGGREGATE @@ -431,7 +437,7 @@ X - - - + CREATE CAST @@ -439,7 +445,7 @@ X - - - + CREATE COLLATION @@ -447,7 +453,7 @@ X - - - + CREATE CONVERSION @@ -455,7 +461,7 @@ X - - - + CREATE DOMAIN @@ -463,7 +469,7 @@ X - - - + CREATE EXTENSION @@ -471,7 +477,7 @@ X - - - + CREATE FOREIGN DATA WRAPPER @@ -479,7 +485,7 @@ X - - - + CREATE FOREIGN TABLE @@ -487,7 +493,7 @@ X - - - + CREATE FUNCTION @@ -495,7 +501,7 @@ X - - - + CREATE INDEX @@ -503,7 +509,7 @@ X - - - + CREATE LANGUAGE @@ -511,7 +517,7 @@ X - - - + CREATE MATERIALIZED VIEW @@ -519,7 +525,7 @@ X - - - + CREATE OPERATOR @@ -527,7 +533,7 @@ X - - - + CREATE OPERATOR CLASS @@ -535,7 +541,7 @@ X - - - + CREATE OPERATOR FAMILY @@ -543,7 +549,7 @@ X - - - + CREATE POLICY @@ -551,7 +557,7 @@ X - - - + CREATE PROCEDURE @@ -559,7 +565,7 @@ X - - - + CREATE PUBLICATION @@ -567,7 +573,7 @@ X - - - + CREATE RULE @@ -575,7 +581,7 @@ X - - - + CREATE SCHEMA @@ -583,7 +589,7 @@ X - - - + CREATE SEQUENCE @@ -591,7 +597,7 @@ X - - - + CREATE SERVER @@ -599,7 +605,7 @@ X - - - + CREATE STATISTICS @@ -607,7 +613,7 @@ X - - - + CREATE SUBSCRIPTION @@ -615,7 +621,7 @@ X - - - + CREATE TABLE @@ -623,7 +629,7 @@ X - - - + CREATE TABLE AS @@ -631,7 +637,7 @@ X - - - + CREATE TEXT SEARCH CONFIGURATION @@ -639,7 +645,7 @@ X - - - + CREATE TEXT SEARCH DICTIONARY @@ -647,7 +653,7 @@ X - - - + CREATE TEXT SEARCH PARSER @@ -655,7 +661,7 @@ X - - - + CREATE TEXT SEARCH TEMPLATE @@ -663,7 +669,7 @@ X - - - + CREATE TRIGGER @@ -671,7 +677,7 @@ X - - - + CREATE TYPE @@ -679,7 +685,7 @@ X - - - + CREATE USER MAPPING @@ -687,7 +693,7 @@ X - - - + CREATE VIEW @@ -695,7 +701,7 @@ X - - - + DROP ACCESS METHOD @@ -703,7 +709,7 @@ X X - - + DROP AGGREGATE @@ -711,7 +717,7 @@ X X - - + DROP CAST @@ -719,7 +725,7 @@ X X - - + DROP COLLATION @@ -727,7 +733,7 @@ X X - - + DROP CONVERSION @@ -735,7 +741,7 @@ X X - - + DROP DOMAIN @@ -743,7 +749,7 @@ X X - - + DROP EXTENSION @@ -751,7 +757,7 @@ X X - - + DROP FOREIGN DATA WRAPPER @@ -759,7 +765,7 @@ X X - - + DROP FOREIGN TABLE @@ -767,7 +773,7 @@ X X - - + DROP FUNCTION @@ -775,7 +781,7 @@ X X - - + DROP INDEX @@ -783,7 +789,7 @@ X X - - + DROP LANGUAGE @@ -791,7 +797,7 @@ X X - - + DROP MATERIALIZED VIEW @@ -799,7 +805,7 @@ X X - - + DROP OPERATOR @@ -807,7 +813,7 @@ X X - - + DROP OPERATOR CLASS @@ -815,7 +821,7 @@ X X - - + DROP OPERATOR FAMILY @@ -823,7 +829,7 @@ X X - - + DROP OWNED @@ -831,7 +837,7 @@ X X - - + DROP POLICY @@ -839,7 +845,7 @@ X X - - + DROP PROCEDURE @@ -847,7 +853,7 @@ X X - - + DROP PUBLICATION @@ -855,7 +861,7 @@ X X - - + DROP RULE @@ -863,7 +869,7 @@ X X - - + DROP SCHEMA @@ -871,7 +877,7 @@ X X - - + DROP SEQUENCE @@ -879,7 +885,7 @@ X X - - + DROP SERVER @@ -887,7 +893,7 @@ X X - - + DROP STATISTICS @@ -895,7 +901,7 @@ X X - - + DROP SUBSCRIPTION @@ -903,7 +909,7 @@ X X - - + DROP TABLE @@ -911,7 +917,7 @@ X X - - + DROP TEXT SEARCH CONFIGURATION @@ -919,7 +925,7 @@ X X - - + DROP TEXT SEARCH DICTIONARY @@ -927,7 +933,7 @@ X X - - + DROP TEXT SEARCH PARSER @@ -935,7 +941,7 @@ X X - - + DROP TEXT SEARCH TEMPLATE @@ -943,7 +949,7 @@ X X - - + DROP TRIGGER @@ -951,7 +957,7 @@ X X - - + DROP TYPE @@ -959,7 +965,7 @@ X X - - + DROP USER MAPPING @@ -967,7 +973,7 @@ X X - - + DROP VIEW @@ -975,7 +981,7 @@ X X - - + GRANT @@ -991,7 +997,7 @@ X - - - + REFRESH MATERIALIZED VIEW @@ -999,7 +1005,7 @@ X - - - + REVOKE @@ -1023,7 +1029,7 @@ X - - - + @@ -1086,7 +1092,7 @@ typedef struct EventTriggerData NodeTag type; const char *event; /* event name */ Node *parsetree; /* parse tree */ - const char *tag; /* command tag */ + CommandTag tag; /* command tag */ } EventTriggerData; diff --git a/postgresql/extend.xml b/postgresql/extend.xml index 62e8f8941..88ebd1515 100644 --- a/postgresql/extend.xml +++ b/postgresql/extend.xml @@ -240,21 +240,118 @@ - Cinq pseudo-types sont particulièrement intéressants : - anyelement, anyarray, anynonarray, - anyenum et anyrange, collectivement appelés types - polymorphes. - Toute fonction déclarée utiliser ces types est dite fonction - polymorphe. Une fonction polymorphe peut opérer sur de nombreux - types de données différents, les types de données spécifiques étant - déterminés par les types des données réellement passés lors d'un appel - particulier de la fonction. + Some pseudo-types of special interest are the polymorphic + types, which are used to declare polymorphic + functions. This powerful feature allows a single function + definition to operate on many different data types, with the specific + data type(s) being determined by the data types actually passed to it + in a particular call. The polymorphic types are shown in + . Some examples of + their use appear in . +
+ Polymorphic Types + + + + + + + Name + Family + Description + + + + + + anyelement + Simple + Indicates that a function accepts any data type + + + + anyarray + Simple + Indicates that a function accepts any array data type + + + + anynonarray + Simple + Indicates that a function accepts any non-array data type + + + + anyenum + Simple + Indicates that a function accepts any enum data type + (see ) + + + + + anyrange + Simple + Indicates that a function accepts any range data type + (see ) + + + + + anycompatible + Common + Indicates that a function accepts any data type, + with automatic promotion of multiple arguments to a common data type + + + + + anycompatiblearray + Common + Indicates that a function accepts any array data type, + with automatic promotion of multiple arguments to a common data type + + + + + anycompatiblenonarray + Common + Indicates that a function accepts any non-array data type, + with automatic promotion of multiple arguments to a common data type + + + + + anycompatiblerange + Common + Indicates that a function accepts any range data type, + with automatic promotion of multiple arguments to a common data type + + + + +
+ Les arguments et résultats polymorphes sont liés entre eux et sont résolus dans un type de données spécifique quand une requête faisant - appel à une fonction polymorphe est analysée. Chaque occurrence (argument + appel à une fonction polymorphe est analysée. When there is more than one + polymorphic argument, the actual + data types of the input values must match up as described below. If the + function's result type is polymorphic, or it has output parameters of + polymorphic types, the types of those results are deduced from the + actual types of the polymorphic inputs as described below. + + + + For the simple family of polymorphic types, the + matching and deduction rules work like this: + + + + Chaque occurrence (argument ou valeur de retour) déclarée comme anyelement peut prendre n'importe quel type réel de données mais, lors d'un appel de fonction donné, elles doivent toutes avoir le @@ -293,8 +390,8 @@ Quand la valeur renvoyée par une fonction est déclarée de type polymorphe, il doit exister au moins une occurrence d'argument également polymorphe, et - le type réel de donnée passé comme argument détermine le type réel de - résultat renvoyé lors de cet appel à la fonction. Par exemple, s'il + le type réel de donnée passé comme argument détermine le(s) type(s) réel(s) + du résultat renvoyé lors de cet appel à la fonction. Par exemple, s'il n'existe pas déjà un mécanisme d'indexation d'éléments de tableau, on peut définir une fonction qui code ce mécanisme : indice(anyarray, integer) returns anyelement. La @@ -308,8 +405,9 @@ Dans la plupart des cas, l'analyseur peut inférer que le type de données réel pour un type résultat polymorphique pour des arguments qui sont d'un - type polymorphique différent  par exemple anyarray peut - être déduit à partir de anyelement et vice versa. L'exception + type polymorphique différent dans la même famille  par exemple + anyarray peut + être déduit à partir de anyelement et vice versa. Une exception est qu'un résultat polymorphique de type anyrange nécessite un argument de type anyrange ; il ne peut pas être déduit d'arguments anyarray ou anyelement. Ceci @@ -326,15 +424,70 @@ les deux arguments réels doivent être du même type enum. + + For the common family of polymorphic types, the + matching and deduction rules work approximately the same as for + the simple family, with one major difference: the + actual types of the arguments need not be identical, so long as they + can be implicitly cast to a single common type. The common type is + selected following the same rules as for UNION and + related constructs (see ). + Selection of the common type considers the actual types + of anycompatible and anycompatiblenonarray + inputs, the array element types of anycompatiblearray + inputs, and the range subtypes of anycompatiblerange + inputs. If anycompatiblenonarray is present then the + common type is required to be a non-array type. Once a common type is + identified, arguments in anycompatible + and anycompatiblenonarray positions are automatically + cast to that type, and arguments in anycompatiblearray + positions are automatically cast to the array type for that type. + + + + Since there is no way to select a range type knowing only its subtype, + use of anycompatiblerange requires that all arguments + declared with that type have the same actual range type, and that that + type's subtype agree with the selected common type, so that no casting + of the range values is required. As with anyrange, use + of anycompatiblerange as a function result type requires + that there be an anycompatiblerange argument. + + + + Notice that there is no anycompatibleenum type. Such a + type would not be very useful, since there normally are not any + implicit casts to enum types, meaning that there would be no way to + resolve a common type for dissimilar enum inputs. + + + + The simple and common polymorphic + families represent two independent sets of type variables. Consider + for example + +CREATE FUNCTION myfunc(a anyelement, b anyelement, + c anycompatible, d anycompatible) +RETURNS anycompatible AS ... + + In an actual call of this function, the first two inputs must have + exactly the same type. The last two inputs must be promotable to a + common type, but this type need not have anything to do with the type + of the first two inputs. The result will have the common type of the + last two inputs. + + Une fonction variadic (c'est-à-dire une fonction acceptant un nombre variable d'arguments, comme dans ) peut être polymorphique : cela se fait en déclarant son dernier paramètre VARIADIC - anyarray. Pour s'assurer de la correspondance des arguments - et déterminer le type de la valeur en retour, ce type de fonction se - comporte de la même façon que si vous aviez écrit le nombre approprié de - paramètres anynonarray. + anyarray ou VARIADIC + anycompatiblearray. Pour s'assurer de la correspondance des + arguments et déterminer le type de la valeur en retour, ce type de + fonction se comporte de la même façon que si vous aviez écrit le nombre + approprié de paramètres anynonarray ou + anycompatiblenonarray. @@ -606,6 +759,31 @@ seuls les superutilisateurs pourront créer cet extension ou la mettre à jour. Si ce paramètre est à false, seuls les droits nécessaires seront requis pour installer ou mettre à jour l'extension. + This should normally be set to true if any of the + script commands require superuser privileges. (Such commands would + fail anyway, but it's more user-friendly to give the error up front.) + +
+ + + + trusted (boolean) + + + This parameter, if set to true (which is not the + default), allows some non-superusers to install an extension that + has superuser set to true. + Specifically, installation will be permitted for anyone who has + CREATE privilege on the current database. + When the user executing CREATE EXTENSION is not + a superuser but is allowed to install by virtue of this parameter, + then the installation or update script is run as the bootstrap + superuser, not as the calling user. + This parameter is irrelevant if superuser is + false. + Generally, this should not be set true for extensions that could + allow access to otherwise-superuser-only abilities, such as + filesystem access. @@ -673,14 +851,28 @@
- Bien que les fichiers de script puissent contenir n'importe quel caractère autorisé - par l'encodage spécifié, les fichiers de contrôle ne peuvent contenir que des caractères - ASCII non formatés. En effet, PostgreSQL ne peut pas déterminer - l'encodage utilisé par les fichiers de contrôle. Dans la pratique, cela ne pose problème - que dans le cas où vous voudriez utiliser des caractères non ASCII dans le commentaire - de l'extension. Dans ce cas de figure, il est recommandé de ne pas utiliser le paramètre - comment du fichier de contrôle pour définir ce commentaire, mais plutôt - la commande COMMENT ON EXTENSION dans un fichier de script. + If the extension script contains the + string @extowner@, that string is replaced with the + (suitably quoted) name of the user calling CREATE + EXTENSION or ALTER EXTENSION. Typically + this feature is used by extensions that are marked trusted to assign + ownership of selected objects to the calling user rather than the + bootstrap superuser. (One should be careful about doing so, however. + For example, assigning ownership of a C-language function to a + non-superuser would create a privilege escalation path for that user.) + + + + Bien que les fichiers de script puissent contenir n'importe quel caractère + autorisé par l'encodage spécifié, les fichiers de contrôle ne peuvent + contenir que des caractères ASCII non formatés. En effet, + PostgreSQL ne peut pas déterminer l'encodage + utilisé par les fichiers de contrôle. Dans la pratique, cela ne pose + problème que dans le cas où vous voudriez utiliser des caractères non + ASCII dans le commentaire de l'extension. Dans ce cas de figure, il est + recommandé de ne pas utiliser le paramètre comment du + fichier de contrôle pour définir ce commentaire, mais plutôt la commande + COMMENT ON EXTENSION dans un fichier de script. @@ -910,29 +1102,6 @@ SELECT pg_catalog.pg_extension_config_dump('my_config', 'WHERE NOT standard_entr cible.
- - Le mécanisme de mise à jour peut être utilisé pour résoudre un cas particulier important : - convertir une collection éparse d'objets en une extension. - Avant que le mécanisme d'extension ne soit introduit à PostgreSQL - (dans la version 9.1), de nombreuses personnes écrivaient des modules d'extension qui créaient - simplement un assortiment d'objets non empaquetés. - Etant donné une base de donnée existante contenant de tels objets, comment convertir ces objets - en des extensions proprement empaquetées ? Les supprimer puis exécuter la commande - CREATE EXTENSION est une première méthode, mais elle n'est pas envisageable lorsque - les objets ont des dépendances (par exemple, s'il y a des colonnes de table dont le type de - données appartient à une extension). Le moyen proposé pour résoudre ce problème est de créer - une extension vide, d'utiliser la commande ALTER EXTENSION ADD pour lier - chaque objet pré-existant à l'extension, et finalement créer les nouveaux objets présents dans - la nouvelle extension mais absents de celle non empaquetée. La commande CREATE EXTENSION - prend en charge cette fonction avec son option FROM old_version, - qui permet de ne pas charger le script d'installation par défaut pour la version ciblée, mais celui nommé - extension--old_version--target_version.sql. - Le choix de la valeur de old_version - relève de la responsabilité de l'auteur de l'extension, même si unpackaged est souvent rencontré. - Il est aussi possible de multiplier les valeurs de old_version pour prendre en compte - une mise à jour depuis différentes anciennes versions. - - La commande ALTER EXTENSION peut exécuter des mises à jour en séquence pour réussir une mise à jour. Par exemple, si seuls les fichiers foo--1.0--1.1.sql diff --git a/postgresql/features.xml b/postgresql/features.xml index 4dd357fa3..4c20c08eb 100644 --- a/postgresql/features.xml +++ b/postgresql/features.xml @@ -52,9 +52,7 @@ de fonctionnalités définis dans SQL-92. Une grande partie représente les fonctionnalités centrales que chaque implantation conforme de SQL doit fournir. Les fonctionnalités - restantes sont purement optionnelles. Certaines sont regroupées au sein de - paquetages auxquels une implantation peut se déclarer conforme. - On parle alors de conformité à un groupe de fonctionnalités. + restantes sont purement optionnelles. @@ -73,6 +71,7 @@ ISO/IEC 9075-11 Information and Definition Schemas (SQL/Schemata)SQL/Schemata ISO/IEC 9075-13 Routines and Types using the Java Language (SQL/JRT)SQL/JRT ISO/IEC 9075-14 XML-related specifications (SQL/XML)SQL/XML + ISO/IEC 9075-15 Multi-dimensional arrays (SQL/MDA)SQL/MDA @@ -81,15 +80,15 @@ La partie 3 est couverte par l'interface ODBC, et la partie 13 est couverte par le plugin PL/Java, mais une conformance exacte n'est pas actuellement vérifiée par ses composants. Il n'y a pas actuellement d'implantations des - parties 4 et 10 pour PostgreSQL. + parties 4, 10 et 15 pour PostgreSQL. PostgreSQL supporte la plupart des fonctionnalités majeures de SQL:2016. Sur - les 179 fonctionnalités requises pour une conformité + les 177 fonctionnalités requises pour une conformité « centrale » complète (full Core conformance), PostgreSQL se conforme à plus de - 160. De plus, il existe une longue liste de + 170. De plus, il existe une longue liste de fonctionnalités optionelles supportées. À la date de rédaction de ce document, aucune version de quelque système de gestion de bases de données que ce soit n'affiche une totale conformité au cœur de SQL:2016. @@ -122,14 +121,14 @@ - - - - + + + + Identifiant - Paquetage + Coeur ? Description Commentaire @@ -152,15 +151,15 @@ similaires sont disponibles. - - - - + + + + Identifiant - Paquetage + Coeur ? Description Commentaire diff --git a/postgresql/file-fdw.xml b/postgresql/file-fdw.xml index 60726a4a7..76d4eabbc 100644 --- a/postgresql/file-fdw.xml +++ b/postgresql/file-fdw.xml @@ -215,7 +215,7 @@ - Créer une table distante pour les journaux applicatifs PostgreSQL au format CSV + Créer une table distante pour les journaux applicatifs PostgreSQL au format CSV Une des utilisations évidentes de file_fdw est de rendre @@ -266,7 +266,8 @@ CREATE FOREIGN TABLE pglog ( query text, query_pos integer, location text, - application_name text + application_name text, + backend_type text ) SERVER pglog OPTIONS ( filename '/home/josh/data/log/pglog.csv', format 'csv' ); diff --git a/postgresql/filelist.xml b/postgresql/filelist.xml index 739efc318..b27d74a44 100644 --- a/postgresql/filelist.xml +++ b/postgresql/filelist.xml @@ -106,6 +106,7 @@ + @@ -170,10 +171,12 @@ - + + + diff --git a/postgresql/fuzzystrmatch.xml b/postgresql/fuzzystrmatch.xml index 6b8405f29..d3ad859db 100644 --- a/postgresql/fuzzystrmatch.xml +++ b/postgresql/fuzzystrmatch.xml @@ -25,6 +25,12 @@ + + This module is considered trusted, that is, it can be + installed by non-superusers who have CREATE privilege + on the current database. + + Soundex diff --git a/postgresql/geqo.xml b/postgresql/geqo.xml index a1264649a..609057ed1 100644 --- a/postgresql/geqo.xml +++ b/postgresql/geqo.xml @@ -93,9 +93,19 @@ (recombinaison, mutation et sélection) permet de trouver de nouvelles générations de points de recherche qui présentent une meilleure adaptation - moyenne que leurs ancêtres. + moyenne que leurs ancêtres. + illustrates these steps. +
+ Structure of a Genetic Algorithm + + + + + +
+ Selon la FAQ de comp.ai.genetic, on ne peut pas réellement @@ -104,49 +114,6 @@ le résultat est assurément non-aléatoire (il est mieux qu'aléatoire). -
- Diagramme structuré d'un algorithme génétique - - - - - - P(t) - génération des ancêtres au temps t - - - - P''(t) - génération des descendants au temps t - - - - - - - +=========================================+ - |>>>>>>>>>>> Algorithme GA <<<<<<<<<<<<<<| - +=========================================+ - | INITIALISE t := 0 | - +=========================================+ - | INITIALISE P(t) | - +=========================================+ - | évalue ADAPTATION de P(t) | - +=========================================+ - | tant que pas CRITERE ARRET faire | - | +-------------------------------------+ - | | P'(t) := RECOMBINAISON{P(t)} | - | +-------------------------------------+ - | | P''(t) := MUTATION{P'(t)} | - | +-------------------------------------+ - | | P(t+1) := SELECTION{P''(t) + P(t)} | - | +-------------------------------------+ - | | évalue ADAPTATION de P''(t) | - | +-------------------------------------+ - | | t := t + 1 | - +===+=====================================+ - -
diff --git a/postgresql/gist.xml b/postgresql/gist.xml index 2d2fd810e..df5008544 100644 --- a/postgresql/gist.xml +++ b/postgresql/gist.xml @@ -90,6 +90,7 @@ ~= + <->
diff --git a/postgresql/glossary.xml b/postgresql/glossary.xml new file mode 100644 index 000000000..0c9e07ddd --- /dev/null +++ b/postgresql/glossary.xml @@ -0,0 +1,1870 @@ + + + Glossary + + This is a list of terms and their meaning in the context of + PostgreSQL and relational database + systems in general. + + + + + ACID + + + Atomicity, + Consistency, + Isolation, and + Durability. + This set of properties of database transactions is intended to + guarantee validity in concurrent operation and even in event of + errors, power failures, etc. + + + + + + Aggregate function + + + A function that + combines (aggregates) multiple input values, + for example by counting, averaging or adding, + yielding a single output value. + + + For more information, see + . + + + + + + + Analyze (operation) + + + The process of collecting statistics from data in + tables + and other relations + to help the query planner + to make decisions about how to execute + queries. + + + (Don't confuse this term with the ANALYZE option + to the command.) + + + + + + Analytic function + + + + + Atomic + + + In reference to a datum: + the fact that its value cannot be broken down into smaller + components. + + + + + In reference to a + database transaction: + see atomicity. + + + + + + Atomicity + + + The property of a transaction + that either all its operations complete as a single unit or none do. + In addition, if a system failure occurs during the execution of a + transaction, no partial results are visible after recovery. + This is one of the ACID properties. + + + + + + Attribute + + + An element with a certain name and data type found within a + tuple or + table. + + + + + + Autovacuum + + + A set of background processes that routinely perform + vacuum + and analyze + operations. + + + For more information, see + . + + + + + + Backend (process) + + + Process of an instance + which acts on behalf of a client session + and handles its requests. + + + (Don't confuse this term with the similar terms + Background Worker or + Background Writer). + + + + + + Background worker (process) + + + Process within an instance, + which runs system- or user-supplied code. + Serves as infrastructure for several features in + PostgreSQL, such as + logical replication + and parallel queries. + In addition, Extensions can add + custom background worker processes. + + + For more information, see + . + + + + + + Background writer (process) + + + A process that writes dirty + data pages from + shared memory to + the file system. It wakes up periodically, but works only for a short + period in order to distribute its expensive I/O + activity over time to avoid generating larger + I/O peaks which could block other processes. + + + For more information, see + . + + + + + + Bloat + + + Space in data pages which does not contain current row versions, + such as unused (free) space or outdated row versions. + + + + + + Cast + + + A conversion of a datum + from its current data type to another data type. + + + For more information, see + . + + + + + + Catalog + + + The SQL standard uses this term to + indicate what is called a + database in + PostgreSQL's terminology. + + + (Don't confuse this term with + system catalog). + + + For more information, see + . + + + + + + Check constraint + + + A type of constraint + defined on a relation + which restricts the values allowed in one or more + attributes. The + check constraint can make reference to any attribute of the same row in + the relation, but cannot reference other rows of the same relation or + other relations. + + + For more information, see + . + + + + + + Checkpoint + + + A point in the WAL sequence + at which it is guaranteed that the heap and index data files have been + updated with all information from + shared memory + modified before that checkpoint; + a checkpoint record is written and flushed to WAL + to mark that point. + + + A checkpoint is also the act of carrying out all the actions that + are necessary to reach a checkpoint as defined above. + This process is initiated when predefined conditions are met, + such as a specified amount of time has passed, or a certain volume + of records has been written; or it can be invoked by the user + with the command CHECKPOINT. + + + For more information, see + . + + + + + + Checkpointer (process) + + + A specialized process responsible for executing checkpoints. + + + + + + Class (archaic) + + + + + Client (process) + + + Any process, possibly remote, that establishes a + session + by connecting to an + instance + to interact with a database. + + + + + + Column + + + An attribute found in + a table or + view. + + + + + + Commit + + + The act of finalizing a + transaction within + the database, which + makes it visible to other transactions and assures its + durability. + + + For more information, see + . + + + + + + Concurrency + + + The concept that multiple independent operations happen within the + database at the same time. + In PostgreSQL, concurrency is controlled by + the multiversion concurrency control + mechanism. + + + + + + Connection + + + An established line of communication between a client process and a + backend process, + usually over a network, supporting a + session. This term is + sometimes used as a synonym for session. + + + For more information, see + . + + + + + + Consistency + + + The property that the data in the + database + is always in compliance with + integrity constraints. + Transactions may be allowed to violate some of the constraints + transiently before it commits, but if such violations are not resolved + by the time it commits, such a transaction is automatically + rolled back. + This is one of the ACID properties. + + + + + + Constraint + + + A restriction on the values of data allowed within a + table, + or in attributes of a + + domain. + + + For more information, see + . + + + + + + Data area + + + + + Data directory + + + The base directory on the filesystem of a + server that contains all + data files and subdirectories associated with an + instance (with the + exception of tablespaces). + The environment variable PGDATA is commonly used to + refer to the + data directory. + + + An instance's storage + space comprises the data directory plus any additional tablespaces. + + + For more information, see + . + + + + + + Database + + + A named collection of + SQL objects. + + + For more information, see + . + + + + + + Database server + + + + + Data page + + + The basic structure used to store relation data. + All pages are of the same size. + Data pages are typically stored on disk, each in a specific file, + and can be read to shared buffers + where they can be modified, becoming + dirty. They become clean when written + to disk. New pages, which initially exist in memory only, are also + dirty until written. + + + + + + Datum + + + The internal representation of one value of an SQL + data type. + + + + + + Delete + + + An SQL command which removes + rows from a given + table + or relation. + + + For more information, see + . + + + + + + Durability + + + The assurance that once a + transaction has + been committed, the + changes remain even after a system failure or crash. + This is one of the ACID properties. + + + + + + Epoch + + + + + Extension + + + A software add-on package that can be installed on an + instance to + get extra features. + + + For more information, see + . + + + + + + File segment + + + A physical file which stores data for a given + relation. + File segments are limited in size by a configuration value + (typically 1 gigabyte), + so if a relation exceeds that size, it is split into multiple segments. + + + For more information, see + . + + + (Don't confuse this term with the similar term + WAL segment). + + + + + + Foreign data wrapper + + + A means of representing data that is not contained in the local + database so that it appears as if were in local + table(s). With a foreign data wrapper it is + possible to define a foreign server and + foreign tables. + + + For more information, see + . + + + + + + Foreign key + + + A type of constraint + defined on one or more columns + in a table which + requires the value(s) in those columns to + identify zero or one row + in another (or, infrequently, the same) + table. + + + + + + Foreign server + + + A named collection of + foreign tables which + all use the same + foreign data wrapper + and have other configuration values in common. + + + For more information, see + . + + + + + + Foreign table + + + A relation which appears to have + rows and + columns similar to a + regular table, but will forward + requests for data through its + foreign data wrapper, + which will return result sets + structured according to the definition of the + foreign table. + + + For more information, see + . + + + + + + Fork + + + Each of the separate segmented file sets in which a relation is stored. + The main fork is where the actual data resides. + There also exist two secondary forks for metadata: + the free space map + and the visibility map. + Unlogged relations + also have an init fork. + + + + + + Free space map (fork) + + + A storage structure that keeps metadata about each data page of a table's + main fork. The free space map entry for each page stores the + amount of free space that's available for future tuples, and is structured + to be efficiently searched for available space for a new tuple of a given + size. + + + For more information, see + . + + + + + + Function + + + Any defined transformation of data. Many functions are already defined + within PostgreSQL itself, but user-defined + ones can also be added. + + + For more information, see + . + + + + + + Grant + + + An SQL command that is used to allow a + user or + role to access + specific objects within the database. + + + For more information, see + . + + + + + + Heap + + + Contains the values of row + attributes (i.e. the data) for a + relation. + The heap is realized within one or more + file segments + in the relation's main fork. + + + + + + Host + + + A computer that communicates with other computers over a network. + This is sometimes used as a synonym for + server. + It is also used to refer to a computer where + client processes run. + + + + + + Index + + + A relation that contains + data derived from a table + (or relation types + such as a materialized view). + Its internal structure supports fast retrieval of and access to the original + data. + + + For more information, see + . + + + + + + Insert + + + An SQL command used to add new data into a + table. + + + For more information, see + . + + + + + + Instance + + + A set of databases and accompanying global SQL objects that are stored in + the same data directory + in a single server. + If running, one + postmaster process + manages a group of backend and auxiliary processes that communicate + using a common shared memory + area. Many instances can run on the same + server + as long as their TCP ports do not conflict. + + + The instance handles all key features of a DBMS: + read and write access to files and shared memory, + assurance of the ACID properties, + connections to client processes, + privilege verification, crash recovery, replication, etc. + + + In PostgreSQL, the term + cluster is also sometimes used to refer to an instance. + (Don't confuse this term with the SQL command CLUSTER.) + + + + + + Isolation + + + The property that the effects of a transaction are not visible to + concurrent transactions + before it commits. + This is one of the ACID properties. + + + For more information, see . + + + + + + Join + + + An SQL keyword used in SELECT statements for + combining data from multiple relations. + + + + + + Key + + + A means of identifying a row within a + table or + relation by + values contained within one or more + attributes + in that table. + + + + + + Lock + + + A mechanism that allows a process to limit or prevent simultaneous + access to a resource. + + + + + + Log file + + + Log files contain human-readable text lines about events. + Examples include login failures, long-running queries, etc. + + + For more information, see + . + + + + + + Log record + + + Archaic term for a WAL record. + + + + + + Logged + + + A table is considered + logged if changes to it are sent to the + WAL. By default, all regular + tables are logged. A table can be specified as + unlogged either at + creation time or via the ALTER TABLE command. + + + + + + Logger (process) + + + If activated, the + Logger process + writes information about database events into the current + log file. + When reaching certain time- or + volume-dependent criteria, a new log file is created. + Also called syslogger. + + + For more information, see + . + + + + + + Master (server) + + + + + Materialized + + + The property that some information has been pre-computed and stored + for later use, rather than computing it on-the-fly. + + + This term is used in + materialized view, + to mean that the data derived from the view's query is stored on + disk separately from the sources of that data. + + + This term is also used to refer to some multi-step queries to mean that + the data resulting from executing a given step is stored in memory + (with the possibility of spilling to disk), so that it can be read multiple + times by another step. + + + + + + Materialized view + + + A relation that is + defined in the same way that a view + is, but stores data in the same way that a + table does. It cannot be + modified via INSERT, UPDATE, or + DELETE operations. + + + For more information, see + . + + + + + + Multi-version concurrency control (MVCC) + + + A mechanism designed to allow several + transactions to be + reading and writing the same rows without one process causing other + processes to stall. + In PostgreSQL, MVCC is implemented by + creating copies (versions) of + tuples as they are + modified; after transactions that can see the old versions terminate, + those old versions need to be removed. + + + + + + Null + + + A concept of non-existence that is a central tenet of relational + database theory. It represents the absence of a definite value. + + + + + + Optimizer + + + + + Parallel query + + + The ability to handle parts of executing a + query to take advantage + of parallel processes on servers with multiple CPUs. + + + + + + Partition + + + One of several disjoint (not overlapping) subsets of a larger set. + + + In reference to a + partitioned table: + One of the tables that each contain part of the data of the partitioned table, + which is said to be the parent. + The partition is itself a table, so it can also be queried directly; + at the same time, a partition can sometimes be a partitioned table, + allowing hierarchies to be created. + + + + + In reference to a window function: + a partition is a user-defined criterion that identifies which neighboring + rows can be considered by the + function. + + + + + + Partitioned table + + + A relation that is + in semantic terms the same as a table, + but whose storage is distributed across several + partitions. + + + + + + Postmaster (process) + + + The very first process of an instance. + It starts and manages the other auxiliary processes and creates + backend processes + on demand. + + + For more information, see + . + + + + + + Primary (server) + + + When two or more databases + are linked via replication, + the server + that is considered the authoritative source of information is called + the primary, + also known as a master. + + + + + + Primary key + + + A special case of a + unique constraint + defined on a + table or other + relation that also + guarantees that all of the + attributes + within the primary key + do not have null values. + As the name implies, there can be only one + primary key per table, though it is possible to have multiple unique + constraints that also have no null-capable attributes. + + + + + + Procedure + + + A defined set of instructions for manipulating data within a + database. + A procedure can + be written in a variety of programming languages. They are + similar to functions, + but are different in that they must be invoked via the CALL + command rather than the SELECT or PERFORM + commands, and they are allowed to make transactional statements such + as COMMIT and ROLLBACK. + + + For more information, see + . + + + + + + Query + + + A request sent by a client to a backend, + usually to return results or to modify data on the database. + + + + + + Query planner + + + The part of PostgreSQL that is devoted to + determining (planning) the most efficient way to + execute queries. + Also known as query optimizer, + optimizer, or simply planner. + + + + + + Record + + + + + Recycling + + + + + Referential integrity + + + A means of restricting data in one relation + by a foreign key + so that it must have matching data in another + relation. + + + + + + Relation + + + The generic term for all objects in a + database + that have a name and a list of + attributes + defined in a specific order. + Tables, + sequences, + views, + foreign tables, + materialized views, + composite types, and + indexes are all relations. + + + Class is an archaic synonym for + relation. + + + + + + Replica (server) + + + A database that is paired + with a primary + database and is maintaining a copy of some or all of the primary database's + data. The foremost reasons for doing this are to allow for greater access + to that data, and to maintain availability of the data in the event that + the primary + becomes unavailable. + + + + + + Replication + + + The act of reproducing data on one + server onto another + server called a replica. + This can take the form of physical replication, + where all file changes from one server are copied verbatim, + or logical replication where a defined subset + of data changes are conveyed using a higher-level representation. + + + + + + Result set + + + A data structure transmitted from a + backend process to + a client upon the + completion of an SQL + command, usually a SELECT but it can be an + INSERT, UPDATE, or + DELETE command if the RETURNING + clause is specified. The data structure consists of zero or more + rows with the same ordered set of + attributes. + + + + + + Revoke + + + A command to prevent access to a named set of + database objects for a + named list of roles. + + + For more information, see + . + + + + + + Role + + + A collection of access privileges to the + instance. + Roles are themselves a privilege that can be granted to other roles. + This is often done for convenience or to ensure completeness + when multiple users need + the same privileges. + + + For more information, see + . + + + + + + Rollback + + + A command to undo all of the operations performed since the beginning + of a transaction. + + + For more information, see + . + + + + + + Row + + + + + Savepoint + + + A special mark in the sequence of steps in a + transaction. + Data modifications after this point in time may be reverted + to the time of the savepoint. + + + For more information, see + . + + + + + + Schema + + + A schema is a namespace for + SQL objects, + which all reside in the same + database. + Each SQL object must reside in exactly one schema. + + + The names of SQL objects of the same type in the same schema are enforced + to be unique. + There is no restriction on reusing a name in multiple schemas. + + + All system-defined SQL objects reside in schema pg_catalog, + and commonly many user-defined SQL objects reside in the default schema + public, + but it is common and recommended that other schemas are created to hold + application-specific SQL objects. + + + + + More generically, the term schema is used to mean + all data descriptions (table definitions, + constraints, comments, etc) + for a given database or + subset thereof. + + + For more information, see + . + + + + + + Segment + + + + + Select + + + The SQL command used to request data from a + database. + Normally, SELECT commands are not expected to modify the + database in any way, + but it is possible that + functions invoked within + the query could have side effects that do modify data. + + + For more information, see + . + + + + + + + + Server + + + A computer on which PostgreSQL + instances run. + The term server denotes real hardware, a + container, or a virtual machine. + + + This term is sometimes used to refer to an instance or to a host. + + + + + + Session + + + A state that allows a client and a backend to interact, + communicating over a connection. + + + + + + Sequence + + + A type of relation that is used to generate values. + Typically the generated values are sequential non-repeating numbers. + They are commonly used to generate surrogate + primary key + values. + + + + + + Shared memory + + + RAM which is used by the processes common to an + instance. + It mirrors parts of database + files, provides a transient area for + WAL records, + and stores additional common information. + Note that shared memory belongs to the complete instance, not to a single + database. + + + The largest part of shared memory is known as shared buffers + and is used to mirror part of data files, organized into pages. + When a page is modified, it is called a dirty page until it is + written back to the file system. + + + For more information, see + . + + + + + + Standby (server) + + + + + SQL Object + + + Any object that can be created with a CREATE + command. Most objects are specific to one database, and are commonly + known as local objects. + Roles, + tablespaces, + replication origins, subscriptions for logical replication, and + databases themselves are not local SQL objects since they exist + entirely outside of any specific database; + they are called global objects. + + + Most local objects belong to a specific + schema in their containing database. + There also exist local objects that do not belong to schemas; some examples are + extensions, + data type casts, and + foreign data wrappers. + + + For more information, see + . + + + + + + SQL standard + + + A series of documents that define the SQL language. + + + + + + Stats collector + + + This process collects statistical information about the + instance's activities. + + + For more information, see + . + + + + + + System catalog + + + A collection of tables + which describe the structure of all + SQL objects + of the instance. + The system catalog resides in the schema pg_catalog. + These tables contain data in internal representation and are + not typically considered useful for user examination; + a number of user-friendlier views, + also in schema pg_catalog, offer more convenient access to + some of that information, while additional tables and views + exist in schema information_schema + (see ) that expose some + of the same and additional information as mandated by the + SQL standard. + + + For more information, see + . + + + + + + Table + + + A collection of tuples having + a common data structure (the same number of + attributes, in the same + order, having the same name and type per position). + A table is the most common form of + relation in + PostgreSQL. + + + For more information, see + . + + + + + + Tablespace + + + A named location on the server filesystem. + All SQL objects + which require storage beyond their definition in the + system catalog + must belong to a single tablespace. + Initially, an instance contains a single usable tablespace which is + used as the default one for all SQL objects, called pg_default. + + + For more information, see + . + + + + + + Temporary table + + + Tables that exist either + for the lifetime of a + session or a + transaction, as + specified at the time of creation. + The data in them is not visible to other sessions, and is not + logged. + Temporary tables are often used to store intermediate data for a + multi-step operation. + + + For more information, see + . + + + + + + TOAST + + + A mechanism by which large attributes of table rows are split and + stored in a secondary table, called the TOAST table. + Each relation with large attributes has its own TOAST table. + + + For more information, see + . + + + + + + Transaction + + + A combination of commands that must act as a single + atomic command: they all + succeed or all fail as a single unit, and their effects are not visible to + other sessions until + the transaction is complete, and possibly even later, depending on the + isolation level. + + + For more information, see + . + + + + + + Transaction ID + + + The numerical, unique, sequentially-assigned identifier that each + transaction receives when it first causes a database modification. + Frequently abbreviated as xid. + When stored on disk, xids are only 32-bits wide, so only + approximately four billion write transaction IDs can be generated; + to permit the system to run for longer than that, + epochs are used, also 32 bits wide. + When the counter reaches the maximum xid value, it starts over at + 3 (values under that are reserved) and the + epoch value is incremented by one. + In some contexts, the epoch and xid values are + considered together as a single 64-bit value. + + + For more information, see + . + + + + + + Trigger + + + A function which can + be defined to execute whenever a certain operation (INSERT, + UPDATE, DELETE, + TRUNCATE) is applied to a + relation. + A trigger executes within the same + transaction as the + statement which invoked it, and if the function fails, then the invoking + statement also fails. + + + For more information, see + . + + + + + + Tuple + + + A collection of attributes + in a fixed order. + That order may be defined by the table + where the tuple is contained, in which case the tuple is often called a + row. It may also be defined by the structure of a + result set, in which case it is sometimes called a record. + + + + + + Unique constraint + + + A type of constraint + defined on a relation + which restricts the values allowed in one or a combination of columns + so that each value or combination of values can only appear once in the + relation — that is, no other row in the relation contains values + that are equal to those. + + + Because null values are + not considered equal to each other, multiple rows with null values are + allowed to exist without violating the unique constraint. + + + + + + Unlogged + + + The property of certain relations + that the changes to them are not reflected in the + WAL. + This disables replication and crash recovery for these relations. + + + The primary use of unlogged tables is for storing + transient work data that must be shared across processes. + + + Temporary tables + are always unlogged. + + + + + + Update + + + An SQL command used to modify + rows + that may already exist in a specified table. + It cannot create or remove rows. + + + For more information, see + . + + + + + + User + + + A role that has the + LOGIN privilege. + + + + + + User mapping + + + The translation of login credentials in the local + database to credentials + in a remote data system defined by a + foreign data wrapper. + + + For more information, see + . + + + + + + Vacuum + + + The process of removing outdated + tuple versions + from tables or materialized views, and other closely related + processing required by PostgreSQL's + implementation of MVCC. + This can be initiated through the use of + the VACUUM command, but can also be handled automatically + via autovacuum processes. + + + For more information, see + . + + + + + + View + + + A relation that is defined by a + SELECT statement, but has no storage of its own. + Any time a query references a view, the definition of the view is + substituted into the query as if the user had typed it as a subquery + instead of the name of the view. + + + For more information, see + . + + + + + + Visibility map (fork) + + + A storage structure that keeps metadata about each data page + of a table's main fork. The visibility map entry for + each page stores two bits: the first one + (all-visible) indicates that all tuples + in the page are visible to all transactions. The second one + (all-frozen) indicates that all tuples + in the page are marked frozen. + + + + + + WAL + + + + + WAL archiver (process) + + + A process that saves copies of WAL files + for the purpose of creating backups or keeping + replicas current. + + + For more information, see + . + + + + + + WAL file + + + Also known as WAL segment or + WAL segment file. + Each of the sequentially-numbered files that provide storage space for + WAL. + The files are all of the same predefined size + and are written in sequential order, interspersing changes + as they occur in multiple simultaneous sessions. + If the system crashes, the files are read in order, and each of the + changes is replayed to restore the system to the state it was in + before the crash. + + + Each WAL file can be released after a + checkpoint + writes all the changes in it to the corresponding data files. + Releasing the file can be done either by deleting it, or by changing its + name so that it will be used in the future, which is called + recycling. + + + For more information, see + . + + + + + + WAL record + + + A low-level description of an individual data change. + It contains sufficient information for the data change to be + re-executed (replayed) in case a system failure + causes the change to be lost. + WAL records use a non-printable binary format. + + + For more information, see + . + + + + + + WAL segment + + + + + WAL writer (process) + + + A process that writes WAL records + from shared memory to + WAL files. + + + For more information, see + . + + + + + + Window function + + + A type of function whose + result is based on values found in + rows of the same + partition. + All aggregate functions + can be used as window functions, but window functions can also be + used to, for example, give ranks to each of the rows in the partition. + Also known as analytic functions. + + + For more information, see + . + + + + + + Write-ahead log + + + The journal that keeps track of the changes in the + instance as user- and + system-invoked operations take place. + It comprises many individual + WAL records written + sequentially to WAL files. + + + + + diff --git a/postgresql/high-availability.xml b/postgresql/high-availability.xml index 48450d9bd..981cc6ec2 100644 --- a/postgresql/high-availability.xml +++ b/postgresql/high-availability.xml @@ -181,7 +181,7 @@ ce que les nœuds s'accordent dans un système transactionnel sérialisable. - Logical Replication + Réplication logique La réplication logique autorise un serveur de bases de données d'envoyer @@ -224,13 +224,13 @@ ce que les nœuds s'accordent dans un système transactionnel sérialisable. - Middleware de réplication basé sur les - instructions + Middleware de réplication basé sur le + SQL Avec les middleware de réplication basés - sur les instructions, un programme intercepte chaque requête SQL et + sur le SQL, un programme intercepte chaque requête SQL et l'envoie à un ou tous les serveurs. Chaque serveur opère indépendamment. Les requêtes en lecture/écriture doivent être envoyées à tous les serveurs pour que chaque serveur reçoive les modifications. Les @@ -324,21 +324,6 @@ ce que les nœuds s'accordent dans un système transactionnel sérialisable. - - Solutions commerciales - - - - Parce que PostgreSQL est libre et facilement - extensible, certaines sociétés utilisent PostgreSQL - dans des solutions commerciales fermées - (closed-source) proposant des fonctionnalités de - bascule sur incident (failover), - réplication et répartition de charge. - - - - @@ -350,30 +335,37 @@ ce que les nœuds s'accordent dans un système transactionnel sérialisable. Matrice de fonctionnalités : haute disponibilité, répartition de charge et réplication + + + + + + + + + Fonctionnalité - Bascule par disques partagés (Shared Disk - Failover) - Réplication par système de fichiers + Disques partagés + Répl. par système de fichiers Envoi des journaux de transactions - Réplication logique - Réplication primaire/secondaire basé sur les triggers - Middleware de réplication - sur instructions - Réplication asynchrone multi-primaires - Réplication synchrone multi-primaires + Répl. logique + Répl. par triggers + Middleware de Répl. SQL + Répl. asynch. MM + Répl. synch. MM - Exemple d'implémentations + Exemple populaires NAS DRBD - réplication en flux interne - réplication logique interne, pglogical + répl. en flux interne + répl. logique interne, pglogical Londiste, Slony pgpool-II Bucardo @@ -381,7 +373,7 @@ ce que les nœuds s'accordent dans un système transactionnel sérialisable. - Méthode de communication + Méthode de comm. Disque partagé Blocs disque WAL @@ -535,6 +527,14 @@ ce que les nœuds s'accordent dans un système transactionnel sérialisable. + + It should also be noted that because PostgreSQL + is open source and easily extended, a number of companies have + taken PostgreSQL and created commercial + closed-source solutions with unique failover, replication, and load + balancing capabilities. These are not discussed here. + + @@ -700,11 +700,13 @@ ce que les nœuds s'accordent dans un système transactionnel sérialisable. - Le mode de standby est quitté et le serveur bascule en mode de fonctionnement normal - quand pg_ctl promote est exécuté ou qu'un fichier de trigger est trouvé (promote_trigger_file). - Avant de basculer, tout WAL immédiatement disponible dans l'archive ou le - pg_wal sera - restauré, mais aucune tentative ne sera faite pour se connecter au primaire. + Le mode de standby est quitté et le serveur bascule en mode de + fonctionnement normal quand pg_ctl promote est exécuté, + que pg_promote() est appelé ou qu'un fichier de trigger + est trouvé (promote_trigger_file). Avant de basculer, + tout WAL immédiatement disponible dans l'archive ou le + pg_wal sera restauré, mais aucune tentative ne sera + faite pour se connecter au primaire. @@ -888,24 +890,26 @@ archive_cleanup_command = 'pg_archivecleanup /path/to/archive %r' Quand le standby est démarré et que primary_conninfo est positionné correctement, le standby se connectera au primaire après avoir rejoué tous les fichiers WAL disponibles dans l'archive. Si la connexion - est établie avec succès, vous verrez un processus walreceiver dans le standby, et - un processus walsender correspondant sur le primaire. + est établie avec succès, vous verrez un processus + walreceiver dans le standby, et un processus + walsender correspondant sur le primaire. Authentification - Il est très important que les privilèges d'accès pour la réplications soient - paramétrés pour que seuls les utilisateurs de confiance puissent lire le - flux WAL, parce qu'il est facile d'en extraire des informations + Il est très important que les privilèges d'accès pour la réplications + soient paramétrés pour que seuls les utilisateurs de confiance puissent + lire le flux WAL, parce qu'il est facile d'en extraire des informations privilégiées. Les serveurs de standby doivent s'authentifier au serveur - primaire en tant que superutilisateur ou avec un compte disposant de - l'attribut REPLICATION. Il est recommandé de créer - un compte utilisateur dédié pour la réplication. Il doit disposer des - attributs REPLICATION et LOGIN. - Alors que l'attribut REPLICATION donne beaucoup de - droits, il ne permet pas à l'utilisateur de modifier de données sur le - serveur primaire, contrairement à l'attribut SUPERUSER. + primaire en tant qu'un compte disposant de l'attribut + REPLICATION ou SUPERUSER. Il est + recommandé de créer un compte utilisateur dédié pour la réplication. Il + doit disposer des attributs REPLICATION et + LOGIN. Alors que l'attribut + REPLICATION donne beaucoup de droits, il ne permet pas + à l'utilisateur de modifier de données sur le serveur primaire, + contrairement à l'attribut SUPERUSER. @@ -1002,10 +1006,11 @@ primary_conninfo = 'host=192.168.1.50 port=5432 user=foo password=foopass' répertoire d'archive en utilisant . Cependant, ces méthodes ont souvent pour résultat le stockage de plus de journaux de transactions que nécessaire, alors que les slots de réplication - ne conservent que le nombre nécessaire de journaux de transactions. Un - avantage de ces méthodes est qu'elles limitent l'espace requis pour - pg_wal ; il n'y a pour le moment aucun moyen d'en - faire de même en utilisant les slots de réplication. + ne conservent que le nombre nécessaire de journaux de transactions. On the + other hand, replication slots can retain so many WAL segments that they + fill up the space allocated for pg_wal; limits the size of WAL files + retained by replication slots. De la même manière, @@ -1586,12 +1591,12 @@ synchronous_standby_names = 'FIRST 2 (s1, s2, s3)' Pour déclencher le failover d'un serveur de standby en log-shipping, exécutez la commande pg_ctl promote, lancez la fonction - pg_promote ou créez un fichier trigger (déclencheur) + pg_promote() ou créez un fichier trigger (déclencheur) avec le nom de fichier et le chemin spécifiés par le paramètre promote_trigger_file de recovery.conf. Si vous comptez utiliser la commande pg_ctl promote ou la fonction - pg_promote pour effectuer la bascule, la variable + pg_promote() pour effectuer la bascule, la variable promote_trigger_file n'est pas nécessaire. S'il s'agit d'ajouter des serveurs qui ne seront utilisés que pour alléger le serveur primaire des requêtes en lecture seule, et non pas pour des considérations @@ -1834,22 +1839,22 @@ if (!triggered) - Accès par requête - SELECT, COPY TO + Accès par requête : SELECT, COPY TO - Commandes de curseur - DECLARE, FETCH, CLOSE + Commandes de curseur : DECLARE, FETCH, CLOSE - Paramètres - SHOW, SET, RESET + Paramètres : SHOW, SET, RESET - Commandes de gestion de transaction + Commandes de gestion de transaction : @@ -1877,13 +1882,13 @@ if (!triggered) - Plans et ressources - PREPARE, EXECUTE, + Plans et ressources : PREPARE, EXECUTE, DEALLOCATE, DISCARD - Plugins et extensions - LOAD + Plugins et extensions : LOAD @@ -1903,7 +1908,7 @@ if (!triggered) - Langage de Manipulation de Données (LMD ou DML) - INSERT, + Langage de Manipulation de Données (LMD ou DML) : INSERT, UPDATE, DELETE, COPY FROM, TRUNCATE. Notez qu'il n'y a pas d'action autorisée qui entraînerait l'exécution d'un @@ -1916,7 +1921,7 @@ if (!triggered) - Langage de Définition de Données (LDD ou DDL) - CREATE, + Langage de Définition de Données (LDD ou DDL) : CREATE, DROP, ALTER, COMMENT. Cette restriction s'applique aussi aux tables temporaires car, pour mener à bien ces opérations, cela nécessiterait de mettre à jour les @@ -1947,7 +1952,7 @@ if (!triggered) - Commandes de gestion de transaction qui positionnent explicitement un état n'étant pas en lecture-seule: + Commandes de gestion de transaction qui positionnent explicitement un état n'étant pas en lecture-seule : @@ -1971,7 +1976,7 @@ if (!triggered) - Commandes de two-phase commit PREPARE TRANSACTION, + Commandes de two-phase commit : PREPARE TRANSACTION, COMMIT PREPARED, ROLLBACK PREPARED parce que même les transactions en lecture seule ont besoin d'écrire dans le WAL durant la phase de préparation (la première des deux phases du two-phase commit). @@ -1979,7 +1984,7 @@ if (!triggered) - Mise à jour de séquence - nextval(), setval() + Mise à jour de séquence : nextval(), setval() @@ -2382,18 +2387,18 @@ LOG: database system is ready to accept read only connections - Langage de Définition de Données (LDD ou DDL) - comme CREATE INDEX + Langage de Définition de Données (LDD ou DDL) : comme CREATE INDEX - Privilège et possession - GRANT, REVOKE, + Privilège et possession : GRANT, REVOKE, REASSIGN - Commandes de maintenance - ANALYZE, VACUUM, + Commandes de maintenance : ANALYZE, VACUUM, CLUSTER, REINDEX @@ -2513,10 +2518,10 @@ LOG: database system is ready to accept read only connections - En fonctionnement normal (pas en récupération), si vous exécutez + En fonctionnement normal (pas en restauration), si vous exécutez DROP USER ou DROP ROLE pour un rôle ayant le privilège LOGIN alors que cet utilisateur est toujours - connecté alors rien ne se produit pour cet utilisateur connecté - il reste connecté. L'utilisateur + connecté alors rien ne se produit pour cet utilisateur connecté — il reste connecté. L'utilisateur ne peut toutefois pas se reconnecter. Ce comportement est le même en récupération, un DROP USER sur le primaire ne déconnecte donc pas cet utilisateur sur le standby. diff --git a/postgresql/hstore.xml b/postgresql/hstore.xml index 58f2685c9..4bfedc5e7 100644 --- a/postgresql/hstore.xml +++ b/postgresql/hstore.xml @@ -19,6 +19,12 @@ semi-structurées. Les clés et les valeurs sont de simples chaînes de texte. + + This module is considered trusted, that is, it can be + installed by non-superusers who have CREATE privilege + on the current database. + + Représentation externe de <type>hstore</type> @@ -103,123 +109,223 @@ SELECT 'a=>1,a=>2'::hstore; Opérateurs<type>hstore</type> - - - - - Opérateur - Description - Exemple - Résultat - - - - - - hstore -> text - obtenir la valeur de la clé (NULL si inexistante) - 'a=>x, b=>y'::hstore -> 'a' - x - - - - hstore -> text[] - obtenir les valeurs pour les clés (NULL si inexistant) - 'a=>x, b=>y, c=>z'::hstore -> ARRAY['c','a'] - {"z","x"} - - - - hstore || hstore - concaténation de hstore - 'a=>b, c=>d'::hstore || 'c=>x, d=>q'::hstore - "a"=>"b", "c"=>"x", "d"=>"q" - - - - hstore ? text - hstore contient-il une clé donnée ? - 'a=>1'::hstore ? 'a' - t - - - - hstore ?& text[] - hstore contient-il toutes les clés indiquées ? - 'a=>1,b=>2'::hstore ?& ARRAY['a','b'] - t - - - - hstore ?| text[] - hstore contient-il une des clés spécifiées ? - 'a=>1,b=>2'::hstore ?| ARRAY['b','c'] - t - - - - hstore @> hstore - l'opérande gauche contient-il l'opérande droit ? - 'a=>b, b=>1, c=>NULL'::hstore @> 'b=>1' - t - - - - hstore <@ hstore - l'opérande gauche est-il contenu dans l'opérande - droit ? - 'a=>c'::hstore <@ 'a=>b, b=>1, c=>NULL' - f - - - - hstore - text - supprimer la clé à partir de l'opérande gauche - 'a=>1, b=>2, c=>3'::hstore - 'b'::text - "a"=>"1", "c"=>"3" - - - - hstore - text[] - supprimer les clés à partir de l'opérande gauche - 'a=>1, b=>2, c=>3'::hstore - ARRAY['a','b'] - "c"=>"3" - - - - hstore - hstore - supprimer les paires correspondantes à partir de l'opérande - gauche - 'a=>1, b=>2, c=>3'::hstore - 'a=>4, b=>2'::hstore - "a"=>"1", "c"=>"3" - - - - record #= hstore - remplacer les chanmps dans record avec des valeurs - correspondantes à hstore - see Examples section - - - - - %% hstore - convertir hstore en un tableau de clés et valeurs - alternatives - %% 'a=>foo, b=>bar'::hstore - {a,foo,b,bar} - - - - %# hstore - convertir hstore en un tableau clé/valeur à deux - dimensions - %# 'a=>foo, b=>bar'::hstore - {{a,foo},{b,bar}} - - - - + + + + + Operator + + + Description + + + Example(s) + + + + + + + + hstore -> text + text + + + Returns value associated with given key, or NULL if + not present. + + + 'a=>x, b=>y'::hstore -> 'a' + x + + + + + + hstore -> text[] + text[] + + + Returns values associated with given keys, or NULL + if not present. + + + 'a=>x, b=>y, c=>z'::hstore -> ARRAY['c','a'] + {"z","x"} + + + + + + hstore || hstore + hstore + + + Concatenates two hstores. + + + 'a=>b, c=>d'::hstore || 'c=>x, d=>q'::hstore + "a"=>"b", "c"=>"x", "d"=>"q" + + + + + + hstore ? text + boolean + + + Does hstore contain key? + + + 'a=>1'::hstore ? 'a' + t + + + + + + hstore ?& text[] + boolean + + + Does hstore contain all the specified keys? + + + 'a=>1,b=>2'::hstore ?& ARRAY['a','b'] + t + + + + + + hstore ?| text[] + boolean + + + Does hstore contain any of the specified keys? + + + 'a=>1,b=>2'::hstore ?| ARRAY['b','c'] + t + + + + + + hstore @> hstore + boolean + + + Does left operand contain right? + + + 'a=>b, b=>1, c=>NULL'::hstore @> 'b=>1' + t + + + + + + hstore <@ hstore + boolean + + + Is left operand contained in right? + + + 'a=>c'::hstore <@ 'a=>b, b=>1, c=>NULL' + f + + + + + + hstore - text + hstore + + + Deletes key from left operand. + + + 'a=>1, b=>2, c=>3'::hstore - 'b'::text + "a"=>"1", "c"=>"3" + + + + + + hstore - text[] + hstore + + + Deletes keys from left operand. + + + 'a=>1, b=>2, c=>3'::hstore - ARRAY['a','b'] + "c"=>"3" + + + + + + hstore - hstore + hstore + + + Deletes pairs from left operand that match pairs in the right operand. + + + 'a=>1, b=>2, c=>3'::hstore - 'a=>4, b=>2'::hstore + "a"=>"1", "c"=>"3" + + + + + + anyelement #= hstore + anyelement + + + Replaces fields in the left operand (which must be a composite type) + with matching values from hstore. + + + ROW(1,3) #= 'f1=>11'::hstore + (11,3) + + + + + + %% hstore + text[] + + + Converts hstore to an array of alternating keys and + values. + + + %% 'a=>foo, b=>bar'::hstore + {a,foo,b,bar} + + + + + + %# hstore + text[] + + + Converts hstore to a two-dimensional key/value array. + + + %# 'a=>foo, b=>bar'::hstore + {{a,foo},{b,bar}} + + + +
@@ -230,246 +336,394 @@ SELECT 'a=>1,a=>2'::hstore; types de données géométriques. - - Fonctions <type>hstore</type> - - - - - Fonction - Type en retour - Description - Exemple - Résultat - - - - - - hstore(record)hstore - hstore - construire un hstore à partir d'un RECORD ou d'un - ROW - hstore(ROW(1,2)) - f1=>1,f2=>2 - - - - hstore(text[]) - hstore - construire un hstore à partir d'un tableau, qui peut - être soit un tableau clé/valeur soit un tableau à deux dimensions - hstore(ARRAY['a','1','b','2']) || hstore(ARRAY[['c','3'],['d','4']]) - a=>1, b=>2, c=>3, d=>4 - - - - hstore(text[], text[]) - hstore - construire un hstore à partir des tableaux séparés - pour les clés et valeurs - hstore(ARRAY['a','b'], ARRAY['1','2']) - "a"=>"1","b"=>"2" - - - - hstore(text, text) - hstore - construire un hstore à un seul élément - hstore('a', 'b') - "a"=>"b" - - - - akeys(hstore)akeys - text[] - récupérer les clés du hstore dans un tableau - akeys('a=>1,b=>2') - {a,b} - - - - skeys(hstore)skeys - setof text - récupérer les clés du hstore dans un ensemble - skeys('a=>1,b=>2') - - -a -b - - - - - avals(hstore)avals - text[] - récupérer les valeurs du hstore dans un tableau - avals('a=>1,b=>2') - {1,2} - - - - svals(hstore)svals - setof text - récupérer les valeurs du hstore dans un - ensemble - svals('a=>1,b=>2') - - -1 -2 - - - - - hstore_to_array(hstore)hstore_to_array - text[] - récupérer les clés et les valeurs du hstore sous - la forme d'un tableau de clés et valeurs alternées - hstore_to_array('a=>1,b=>2') - {a,1,b,2} - - - - hstore_to_matrix(hstore)hstore_to_matrix - text[] - récupérer les clés et valeurs hstore sous la forme - d'un tableau à deux dimensions - hstore_to_matrix('a=>1,b=>2') - {{a,1},{b,2}} - - - - hstore_to_json(hstore)hstore_to_json - json - obtenir une valeur json à partir d'un hstore, - convertissant toutes les valeurs non NULL en chaînes JSON - hstore_to_json('"a key"=>1, b=>t, c=>null, d=>12345, e=>012345, f=>1.234, g=>2.345e+4') - {"a key": "1", "b": "t", "c": null, "d": "12345", "e": "012345", "f": "1.234", "g": "2.345e+4"} - - - - hstore_to_jsonb(hstore)hstore_to_jsonb - jsonb - obtenir une valeur jsonb à partir d'un hstore, - convertissant toutes les valeurs non NULL en chaînes JSON - hstore_to_jsonb('"a key"=>1, b=>t, c=>null, d=>12345, e=>012345, f=>1.234, g=>2.345e+4') - {"a key": "1", "b": "t", "c": null, "d": "12345", "e": "012345", "f": "1.234", "g": "2.345e+4"} - - - - hstore_to_json_loose(hstore)hstore_to_json_loose - json - obtenir une valeur json à partir d'un hstore, mais - en essayant de distinguer les valeurs numériques et booléennes pour - qu'elles ne soient pas entre guillemets dans le JSON - hstore_to_json_loose('"a key"=>1, b=>t, c=>null, d=>12345, e=>012345, f=>1.234, g=>2.345e+4') - {"a key": 1, "b": true, "c": null, "d": 12345, "e": "012345", "f": 1.234, "g": 2.345e+4} - - - - hstore_to_jsonb_loose(hstore)hstore_to_jsonb_loose - jsonb - obtenir une valeur jsonb à partir d'un hstore, - mais essaie de distinguer les valeurs numériques et booléenne pour qu'elles - soient sans guillemets dans le JSON - hstore_to_jsonb_loose('"a key"=>1, b=>t, c=>null, d=>12345, e=>012345, f=>1.234, g=>2.345e+4') - {"a key": 1, "b": true, "c": null, "d": 12345, "e": "012345", "f": 1.234, "g": 2.345e+4} - - - - slice(hstore, text[])slice - hstore - extraire un sous-ensemble d'un hstore - slice('a=>1,b=>2,c=>3'::hstore, ARRAY['b','c','x']) - "b"=>"2", "c"=>"3" - - - - each(hstore)each - setof (key text, value text) - récupérer les clés et valeurs du hstore dans un - ensemble - select * from each('a=>1,b=>2') - - - key | value ------+------- - a | 1 - b | 2 - - - - - exist(hstore,text)exist - boolean - le hstore contient-il une clé donnée ? - exist('a=>1','a') - t - - - - defined(hstore,text)defined - boolean - le hstore contient-il une valeur non NULL pour la - clé ? - defined('a=>NULL','a') - f - - - - delete(hstore,text)delete - hstore - supprimer toute paire correspondant à une clé donnée - delete('a=>1,b=>2','b') - "a"=>"1" - - - - delete(hstore,text[]) - hstore - supprimer toute paire de clés correspondante - delete('a=>1,b=>2,c=>3',ARRAY['a','b']) - "c"=>"3" - - - - delete(hstore,hstore) - hstore - supprimer les paires correspondant à celle du second argument - delete('a=>1,b=>2','a=>4,b=>2'::hstore) - "a"=>"1" - - - - populate_record(record,hstore)populate_record - record - remplacer les champs dans record avec les valeurs - correspondant au hstore - voir la section Exemples - - - - -
- - - - La fonction hstore_to_json est utilisée quand une - valeur hstore est convertie en valeur json. De - la même façon, hstore_to_jsonb est utilisée quand une - valeur hstore est convertie en valeur jsonb. - - - - - - La fonction populate_record est en fait déclarée avec - anyelement, et non pas record, en tant que - premier argument mais elle rejettera les types qui ne sont pas des RECORD - avec une erreur d'exécution. - - + + <type>hstore</type> Functions + + + + + Fonction + + + Description + + + Exemple(s) + + + + + + + + hstore + hstore ( record ) + hstore + + + Construire un hstore à partir d'un RECORD ou d'un + ROW + + + hstore(ROW(1,2)) + "f1"=>"1", "f2"=>"2" + + + + + + hstore ( text[] ) + hstore + + + Construire un hstore à partir d'un tableau, qui peut + être soit un tableau clé/valeur soit un tableau à deux dimensions. + + + hstore(ARRAY['a','1','b','2']) + "a"=>"1", "b"=>"2" + + + hstore(ARRAY[['c','3'],['d','4']]) + "c"=>"3", "d"=>"4" + + + + + + hstore ( text[], text[] ) + hstore + + + Construire un hstore à partir des tableaux séparés + pour les clés et valeurs. + + + hstore(ARRAY['a','b'], ARRAY['1','2']) + "a"=>"1", "b"=>"2" + + + + + + hstore ( text, text ) + hstore + + + Construire un hstore à un seul élément. + + + hstore('a', 'b') + "a"=>"b" + + + + + + akeys + akeys ( hstore ) + text[] + + + Extrait les clés du hstore dans un tableau. + + + akeys('a=>1,b=>2') + {a,b} + + + + + + skeys + skeys ( hstore ) + setof text + + + Extrait les clés du hstore dans un ensemble. + + + skeys('a=>1,b=>2') + + + a + b + + + + + + + avals + avals ( hstore ) + text[] + + + Extrait les valeurs du hstore dans un tableau. + + + avals('a=>1,b=>2') + {1,2} + + + + + + svals + svals ( hstore ) + setof text + + + Extrait les valeurs du hstore dans un ensemble. + + + svals('a=>1,b=>2') + + + 1 + 2 + + + + + + + hstore_to_array + hstore_to_array ( hstore ) + text[] + + + Extrait les clés et les valeurs du hstore sous + la forme d'un tableau de clés et valeurs alternées. + + + hstore_to_array('a=>1,b=>2') + {a,1,b,2} + + + + + + hstore_to_matrix + hstore_to_matrix ( hstore ) + text[] + + + Extrait les clés et valeurs hstore sous la forme + d'un tableau à deux dimensions. + + + hstore_to_matrix('a=>1,b=>2') + {{a,1},{b,2}} + + + + + + hstore_to_json + hstore_to_json ( hstore ) + json + + + Convertit une valeur jsonb à partir d'un hstore, + convertissant toutes les valeurs non NULL en chaînes JSON. + + + Cette fonction est utilisée implicitement quand une valeur + hstore est convertie en json. + + + hstore_to_json('"a key"=>1, b=>t, c=>null, d=>12345, e=>012345, f=>1.234, g=>2.345e+4') + {"a key": "1", "b": "t", "c": null, "d": "12345", "e": "012345", "f": "1.234", "g": "2.345e+4"} + + + + + + hstore_to_jsonb + hstore_to_jsonb ( hstore ) + jsonb + + + Convertit une valeur jsonb à partir d'un hstore, + convertissant toutes les valeurs non NULL en chaînes JSON. + + + Cette fonction est utilisée implicitement quand une valeur + hstore est convertie en jsonb. + + + hstore_to_jsonb('"a key"=>1, b=>t, c=>null, d=>12345, e=>012345, f=>1.234, g=>2.345e+4') + {"a key": "1", "b": "t", "c": null, "d": "12345", "e": "012345", "f": "1.234", "g": "2.345e+4"} + + + + + + hstore_to_json_loose + hstore_to_json_loose ( hstore ) + json + + + Convertit un hstore en une valeur json, mais + en essayant de distinguer les valeurs numériques et booléennes pour + qu'elles ne soient pas entre guillemets dans le JSON. + + + hstore_to_json_loose('"a key"=>1, b=>t, c=>null, d=>12345, e=>012345, f=>1.234, g=>2.345e+4') + {"a key": 1, "b": true, "c": null, "d": 12345, "e": "012345", "f": 1.234, "g": 2.345e+4} + + + + + + hstore_to_jsonb_loose + hstore_to_jsonb_loose ( hstore ) + jsonb + + + Convertit un hstore en une valeur jsonn, mais + en essayant de distinguer les valeurs numériques et booléennes pour + qu'elles ne soient pas entre guillemets dans le JSON. + + + hstore_to_jsonb_loose('"a key"=>1, b=>t, c=>null, d=>12345, e=>012345, f=>1.234, g=>2.345e+4') + {"a key": 1, "b": true, "c": null, "d": 12345, "e": "012345", "f": 1.234, "g": 2.345e+4} + + + + + + slice + slice ( hstore, text[] ) + hstore + + + Extrait un sous-ensemble d'un hstore contenant seulement + les clés indiquées. + + + slice('a=>1,b=>2,c=>3'::hstore, ARRAY['b','c','x']) + "b"=>"2", "c"=>"3" + + + + + + each + each ( hstore ) + setof record + ( key text, + value text ) + + + Extrait les clés et valeurs d'un hstore sous la forme + d'un ensemble d'enregistrements. + + + select * from each('a=>1,b=>2') + + + key | value + -----+------- + a | 1 + b | 2 + + + + + + + exist + exist ( hstore, text ) + boolean + + + Le hstore contient-il une clé donnée ? + + + exist('a=>1','a') + t + + + + + + defined + defined ( hstore, text ) + boolean + + + Le hstore contient-il une valeur non NULL pour la + clé ? + + + defined('a=>NULL','a') + f + + + + + + delete + delete ( hstore, text ) + hstore + + + Supprimer toute paire correspondant à une clé donnée. + + + delete('a=>1,b=>2','b') + "a"=>"1" + + + + + + delete ( hstore, text[] ) + hstore + + + Supprimer toute paire de clé correspondante. + + + delete('a=>1,b=>2,c=>3',ARRAY['a','b']) + "c"=>"3" + + + + + + delete ( hstore, hstore ) + hstore + + + Supprimer les paires correspondant à celles du second argument + + + delete('a=>1,b=>2','a=>4,b=>2'::hstore) + "a"=>"1" + + + + + + populate_record + populate_record ( anyelement, hstore ) + anyelement + + + Remplacer tous les champs de l'opérande gauche (qui doit être un type composite) + avec les valeurs correspondantes du hstore. + + + populate_record(ROW(1,2), 'f1=>42'::hstore) + (42,2) + + + + +
@@ -486,6 +740,23 @@ CREATE INDEX hidx ON testhstore USING GIST (h); CREATE INDEX hidx ON testhstore USING GIN (h); + + gist_hstore_ops GiST opclass approximates a set of + key/value pairs as a bitmap signature. Its optional integer parameter + siglen determines the + signature length in bytes. The default length is 16 bytes. + Valid values of signature length are between 1 and 2024 bytes. Longer + signatures lead to a more precise search (scanning a smaller fraction of the index and + fewer heap pages), at the cost of a larger index. + + + + Example of creating such an index with a signature length of 32 bytes: + + + CREATE INDEX hidx ON testhstore USING GIST (h gist_hstore_ops(siglen=32)); + + hstore supporte aussi les index btree ou hash pour l'opérateur =. Cela permet aux @@ -522,7 +793,7 @@ UPDATE tab SET h = delete(h, 'k1'); - Convertiir un type record en un hstore : + Convertir un type record en un hstore : CREATE TABLE test (col1 integer, col2 text, col3 text); @@ -649,7 +920,7 @@ ALTER TABLE nom_table ALTER col_hstore TYPE col_hstore USING hstorecol || ''; - Transforms + Transformations Des extensions supplémentaires sont disponibles pour implémenter des @@ -665,6 +936,11 @@ ALTER TABLE nom_table ALTER col_hstore TYPE col_hstore USING hstorecol || ''; pour la convention de nommage PL/Python). Si vous les utilisez, les valeurs hstore sont converties en dictionnaires Python. + + + Of these additional extensions, hstore_plperl is + considered trusted; the rest are not. + diff --git a/postgresql/indexam.xml b/postgresql/indexam.xml index 9df1aab9c..ae2d6336a 100644 --- a/postgresql/indexam.xml +++ b/postgresql/indexam.xml @@ -131,6 +131,10 @@ typedef struct IndexAmRoutine bool amcanparallel; /* la méthode gère-t-elle les colonnes incluses avec la clause INCLUDE ? */ bool amcaninclude; + /* does AM use maintenance_work_mem? */ + bool amusemaintenanceworkmem; + /* OR of parallel vacuum flags */ + uint8 amparallelvacuumoptions; /* type de données stocké dans l'index, ou InvalidOid si variable */ Oid amkeytype; diff --git a/postgresql/indices.xml b/postgresql/indices.xml index 11ac08661..675152b5f 100644 --- a/postgresql/indices.xml +++ b/postgresql/indices.xml @@ -102,8 +102,7 @@ souvent inacceptable. Il est possible d'autoriser les écritures en parallèle de la création d'un index, mais quelques précautions sont à prendre. Pour plus d'informations, voir . + linkend="sql-createindex-concurrently"/>.
@@ -1337,7 +1336,8 @@ SELECT target FROM tests WHERE subject = 'some-subject' AND success; Une définition d'index peut indiquer une classe d'opérateurs pour chaque colonne de l'index. - CREATE INDEX nom ON table (colonne classe_operateur options de tri, ...); + CREATE INDEX nom ON table (colonne classe_operateur [ ( options classe opérateur ) ] options de tri , ...); + La classe d'opérateurs identifie les opérateurs que l'index doit utiliser sur cette colonne. Par exemple, un index B-tree sur une colonne de type int4 utilise la classe int4_ops. diff --git a/postgresql/install-windows.xml b/postgresql/install-windows.xml index 06fd48c3e..1d9e74f6c 100644 --- a/postgresql/install-windows.xml +++ b/postgresql/install-windows.xml @@ -49,8 +49,7 @@ Cygwin pour faire fonctionner un serveur de production. Il devrait uniquement être utilisé pour le fonctionnement sur d'anciennes versions de Windows, où la - construction native ne fonctionne pas, comme Windows - 98. Les exécutables officiels sont construits avec + construction native ne fonctionne pas. Les exécutables officiels sont construits avec Visual Studio. diff --git a/postgresql/installation.xml b/postgresql/installation.xml index a1002001c..9640a1c93 100644 --- a/postgresql/installation.xml +++ b/postgresql/installation.xml @@ -190,7 +190,7 @@ su - postgres Pour compiler le langage de programmation serveur PL/Python, il faut que Python soit installé avec les fichiers d'en-tête et le module distutils. La - version minimum requise est Python 2.4. + version minimum requise est Python 2.6. Python 3 est supporté s'il s'agit d'une version 3.1 ou ultérieure ; voir la @@ -251,7 +251,7 @@ su - postgres OpenSSL est aussi requis pour la génération de nombres aléatoires sur les plateformes qui n'ont pas /dev/urandom (sauf Windows). La version minimale - requise est la 0.9.8. + requise est la 1.0.1. @@ -329,11 +329,11 @@ su - postgres Il est important de vérifier qu'il y a suffisamment d'espace disque - disponible. 100 Mo sont nécessaires pour la compilation et 20 Mo pour le + disponible. 350 Mo sont nécessaires pour la compilation et 60 Mo pour le répertoire d'installation. Un groupe de bases de données vide nécessite - 35 Mo ; les fichiers des bases prennent cinq fois plus d'espace que des + 40 Mo ; les fichiers des bases prennent cinq fois plus d'espace que des fichiers texte contenant les mêmes données. Si des tests de - régression sont prévus, 150 Mo supplémentaires sont temporairement + régression sont prévus, 300 Mo supplémentaires sont temporairement nécessaires. On peut utiliser la commande df pour vérifier l'espace disque disponible. @@ -353,7 +353,10 @@ su - postgres gunzip postgresql-&version;.tar.gz tar xf postgresql-&version;.tar (Utilisez bunzip2 à la place de gunzip - si vous avez le fichier .bz2.) + si vous avez le fichier .bz2. Also, note that most + modern versions of tar can unpack compressed archives + directly, so you don't really need the + separate gunzip or bunzip2 step.) Cela crée un répertoire postgresql-&version; contenant les sources de PostgreSQL dans le répertoire courant. Le reste de la procédure d'installation s'effectue depuis ce @@ -388,9 +391,13 @@ su - postgres de certaines variables dépendantes du système et de détecter certains aléas relatifs au système d'exploitation. Il créera divers fichiers dans l'arborescence de compilation pour enregistrer ce qui a été - trouvé. configure peut aussi être exécuté à - partir d'un répertoire hors de l'arborescence des sources pour - conserver l'arborescence de compilation séparée. Cette procédure est aussi + trouvé. +
+ + + configure peut aussi être exécuté à + partir d'un répertoire hors de l'arborescence des sources, and then build there, pour + conserver l'arborescence de compilation séparée from the original source files. Cette procédure est aussi appelée une construction de type VPATHVPATH. Voici comment la faire : @@ -412,7 +419,231 @@ su - postgres Les processus de compilation et d'installation peuvent être personnalisés par l'utilisation d'une ou plusieurs options sur la ligne de commande après - configure : + configure. + Typically you would customize the install location, or the set of + optional features that are built. configure + has a large number of options, which are described in + . + + + + Also, configure responds to certain environment + variables, as described in . + These provide additional ways to customize the configuration. + + + + + Build + + + To start the build, type either of: + +make +make all + + (Remember to use GNU make.) + The build will take a few minutes depending on your + hardware. The last line displayed should be: + +All of PostgreSQL successfully made. Ready to install. + + + + + If you want to build everything that can be built, including the + documentation (HTML and man pages), and the additional modules + (contrib), type instead: + +make world + + The last line displayed should be: + +PostgreSQL, contrib, and documentation successfully made. Ready to install. + + + + + If you want to invoke the build from another makefile rather than + manually, you must unset MAKELEVEL or set it to zero, + for instance like this: + +build-postgresql: + $(MAKE) -C postgresql MAKELEVEL=0 all + + Failure to do that can lead to strange error messages, typically about + missing header files. + + + + + Regression Tests + + + regression test + + + + If you want to test the newly built server before you install it, + you can run the regression tests at this point. The regression + tests are a test suite to verify that PostgreSQL + runs on your machine in the way the developers expected it + to. Type: + +make check + + (This won't work as root; do it as an unprivileged user.) + See for + detailed information about interpreting the test results. You can + repeat this test at any later time by issuing the same command. + + + + + Installing the Files + + + + If you are upgrading an existing system be sure to read + , + which has instructions about upgrading a + cluster. + + + + + To install PostgreSQL enter: + +make install + + This will install files into the directories that were specified + in . Make sure that you have appropriate + permissions to write into that area. Normally you need to do this + step as root. Alternatively, you can create the target + directories in advance and arrange for appropriate permissions to + be granted. + + + + To install the documentation (HTML and man pages), enter: + +make install-docs + + + + + If you built the world above, type instead: + +make install-world + + This also installs the documentation. + + + + You can use make install-strip instead of + make install to strip the executable files and + libraries as they are installed. This will save some space. If + you built with debugging support, stripping will effectively + remove the debugging support, so it should only be done if + debugging is no longer needed. install-strip + tries to do a reasonable job saving space, but it does not have + perfect knowledge of how to strip every unneeded byte from an + executable file, so if you want to save all the disk space you + possibly can, you will have to do manual work. + + + + The standard installation provides all the header files needed for client + application development as well as for server-side program + development, such as custom functions or data types written in C. + (Prior to PostgreSQL 8.0, a separate make + install-all-headers command was needed for the latter, but this + step has been folded into the standard install.) + + + + Client-only installation: + + If you want to install only the client applications and + interface libraries, then you can use these commands: + +make -C src/bin install +make -C src/include install +make -C src/interfaces install +make -C doc install + + src/bin has a few binaries for server-only use, + but they are small. + + + + + + + Uninstallation: + + To undo the installation use the command make + uninstall. However, this will not remove any created directories. + + + + + Cleaning: + + + After the installation you can free disk space by removing the built + files from the source tree with the command make + clean. This will preserve the files made by the configure + program, so that you can rebuild everything with make + later on. To reset the source tree to the state in which it was + distributed, use make distclean. If you are going to + build for several platforms within the same source tree you must do + this and re-configure for each platform. (Alternatively, use + a separate build tree for each platform, so that the source tree + remains unmodified.) + + + + + If you perform a build and then discover that your configure + options were wrong, or if you change anything that configure + investigates (for example, software upgrades), then it's a good + idea to do make distclean before reconfiguring and + rebuilding. Without this, your changes in configuration choices + might not propagate everywhere they need to. + + + + <filename>configure</filename> Options + + + configure options + + + + configure's command line options are explained below. + This list is not exhaustive (use ./configure --help + to get one that is). The options not covered here are meant for + advanced use-cases such as cross-compilation, and are documented in + the standard Autoconf documentation. + + + + Installation Locations + + + These options control where make install will put + the files. The option is sufficient for + most cases. If you have special needs, you can customize the + installation subdirectories with the other options described in this + section. Beware however that changing the relative locations of the + different subdirectories may render the installation non-relocatable, + meaning you won't be able to move it after installation. + (The man and doc locations are + not affected by this restriction.) For relocatable installs, you + might want to use the --disable-rpath option + described later. + @@ -425,22 +656,6 @@ su - postgres sous-répertoires ; aucun fichier ne sera directement installé sous PREFIX. - - - Pour satisfaire des besoins spécifiques, les sous-répertoires peuvent - être personnalisés à l'aide des options qui suivent. - Toutefois, en laissant les options par défaut, l'installation est - déplaçable, ce qui signifie que le répertoire peut être déplacé après - installation. (Cela n'affecte pas les emplacements de - man et doc.) - - - - Pour les installations déplaçables, on peut utiliser - l'option --disable-rpath de configure. - De plus, il faut indiquer au système d'exploitation - comment trouver les bibliothèques partagées. - @@ -603,59 +818,19 @@ su - postgres libdir pour les modules chargeables dynamiquement. - +
+ + <productname>PostgreSQL</productname> Features - - - - - - Ajoute STRING au numéro de version de - PostgreSQL. Cela peut être utilisé, par exemple, pour marquer des - binaires compilés depuis des instantanés Git ne faisant pas encore - partie d'une version officielle ou contenant des patchs particuliers - avec une chaîne de texte supplémentaire telle qu'un identifiant - git describe ou un numéro de version d'un paquet - d'une distribution. - - - - - - - - - REPERTOIRES est une liste de répertoires séparés par - le caractère deux points (:) qui sera ajoutée à la liste de recherche - des fichiers d'en-tête du compilateur. Si vous avez des paquetages optionnels (tels - que Readline GNU) installés dans des répertoires non - conventionnels, vous devez utiliser cette option et probablement aussi - l'option correspondante. - - - Exemple : - --with-includes=/opt/gnu/include:/usr/sup/include. - - - - - - - - - REPERTOIRES est une liste de recherche de répertoires - de bibliothèques séparés par le caractère deux points (:). - Si des paquets sont installés dans des répertoires non conventionnels, - il peut s'avérer nécessaire d'utiliser cette option (ainsi que l'option correspondante - ). - - - Exemple : --with-libraries=/opt/gnu/lib:/usr/sup/lib. - - - + The options described in this section enable building of + various PostgreSQL features that are not + built by default. Most of these are non-default only because they + require additional software, as described in + . + + @@ -673,23 +848,7 @@ su - postgres Pour utiliser cette option, une implantation de - l'API Gettext est nécessaire ; voir ci-dessous. - - - - - - - - - Positionne NUMERO comme numéro de port par défaut - pour le serveur et les clients. La valeur par défaut est 5432. Le port - peut toujours être modifié ultérieurement mais, s'il est précisé ici, - les exécutables du serveur et des clients auront la même valeur - par défaut, ce qui est vraiment très pratique. Habituellement, la - seule bonne raison de choisir une autre valeur que celle par défaut - est l'exécution de plusieurs serveurs - PostgreSQL sur la même machine. + l'API Gettext est nécessaire. @@ -729,41 +888,45 @@ su - postgres Tcl installe les fichiers tclConfig.sh, contenant certaines informations de configuration nécessaires pour compiler le module d'interfaçage avec Tcl. Ce fichier est trouvé automatiquement - mais pour utiliser une version différente de Tcl, il faut indiquer le répertoire dans lequel il - se trouve. + mais pour utiliser une version différente de Tcl, il faut indiquer le + répertoire dans lequel tclConfig.sh se trouve. - - - - Permet la compilation avec le support de l'authentification GSSAPI. Sur de - nombreux systèmes, GSSAPI (qui fait habituellement partie d'une - installation Kerberos) n'est pas installé dans un emplacement - recherché par défaut (c'est-à-dire /usr/include, - /usr/lib), donc vous devez utiliser les options - et - en plus de cette option. configure vérifiera les - fichiers d'en-tête et les bibliothèques nécessaires pour s'assurer - que votre installation GSSAPI est suffisante avant de continuer. - - - - - - + - Le nom par défaut du service principal de Kerberos utilisé. - postgres est pris par défaut. Il n'y a - habituellement pas de raison de le changer sauf dans le cas d'un - environnement Windows, auquel cas il doit être mis en majuscule, - POSTGRES. + Build with support for + the ICUICU + library, enabling use of ICU collation + features (see + ). + This requires the ICU4C package + to be installed. The minimum required version + of ICU4C is currently 4.2. - - + + + By default, + pkg-configpkg-config + will be used to find the required compilation options. This is + supported for ICU4C version 4.6 and later. + For older versions, or if pkg-config is + not available, the variables ICU_CFLAGS + and ICU_LIBS can be specified + to configure, like in this example: + +./configure ... --with-icu ICU_CFLAGS='-I/some/where/include' ICU_LIBS='-L/some/where/lib -licui18n -licuuc -licudata' + + (If ICU4C is in the default search path + for the compiler, then you still need to specify nonempty strings in + order to avoid use of pkg-config, for + example, ICU_CFLAGS=' '.) + + + @@ -782,8 +945,8 @@ su - postgres llvm-config, puis llvm-config-$major-$minor pour toutes les versions supportées, seront recherché dans PATH. Dans le cas où - les bons binaires ne sont pas trouvés, il faut utiliser la variable - LLVM_CONFIG afin de spécifier le chemin à + le bon programme n'est pas trouvé, il faut utiliser la variable + LLVM_CONFIG afin de spécifier le chemin vers le bon llvm-config. Par exemple : ./configure ... --with-llvm LLVM_CONFIG='/path/to/llvm/bin/llvm-config' @@ -801,42 +964,6 @@ su - postgres - - - - - Installer PostgreSQL avec la bibliothèque - ICU - ICU - L'installation des paquets ICU4C - et pkg-config - pkg-config - sont un pré-requis. - La version minimale requise de ICU4C - est actuellement la 4.2. - - - - Par défaut, - pkg-configpkg-config - sera utilisé pour trouver les options requises de compilation. C'est - supporté par les versions 4.6 et ultérieures de - ICU4C. Pour les versions plus anciennes ou - si pkg-config n'est pas disponible, les - variables ICU_CFLAGS et ICU_LIBS peuvent - être données à configure, comme dans cet - exemple : - -./configure ... --with-icu ICU_CFLAGS='-I/some/where/include' ICU_LIBS='-L/some/where/lib -licui18n -licuuc -licudata' - - (Si ICU4C est dans le chemin de recherche - par défaut du compilateur, alors vous aurez besoin d'indiquer une - chaîne non vide pour éviter l'utilisation de pkg- - config, par exemple ICU_CFLAGS=' '.) - - - - @@ -857,23 +984,18 @@ su - postgres - - - - Compile le support - PAMPAM - (Modules d'Authentification Pluggable). - - - - - - + - Compile le support de l'authentification BSD (l'environnement - d'authentification BSD est uniquement disponible sur OpenBSD - actuellement.) + Build with support for GSSAPI authentication. On many systems, the + GSSAPI system (usually a part of the Kerberos installation) is not + installed in a location + that is searched by default (e.g., /usr/include, + /usr/lib), so you must use the options + and in + addition to this option. configure will check + for the required header files and libraries to make sure that + your GSSAPI installation is sufficient before proceeding. @@ -898,42 +1020,37 @@ su - postgres - + - Compile le support des notifications du service systemd - systemd. Ceci améliore - l'intégration si le binaire du serveur est lancé par - systemd mais n'a pas d'impact dans le cas - contraire (voir pour plus - d'informations). libsystemd et les - fichiers en-têtes associés doivent être installés pour pouvoir utiliser - cette option. + Build with PAMPAM + (Pluggable Authentication Modules) support. - - + + - Évite l'utilisation de la bibliothèque Readline - (et de celle de libedit). - Cela désactive l'édition de la ligne de commande et l'historique dans - psql, ce n'est donc pas recommandé. + Build with BSD Authentication support. + (The BSD Authentication framework is + currently only available on OpenBSD.) - + - Favorise l'utilisation de la bibliothèque libedit - (sous licence BSD) plutôt que Readline (GPL). - Cette option a seulement un sens si vous avez installé les deux - bibliothèques ; dans ce cas, par défaut, - Readline est utilisé. + Build with support + for systemdsystemd + service notifications. This improves integration if the server + is started under systemd but has no impact + otherwise; see for more + information. libsystemd and the + associated header files need to be installed to use this option. @@ -942,8 +1059,9 @@ su - postgres - Compile le support de Bonjour. Ceci requiert le support de Bonjour - dans votre système d'exploitation. Recommandé sur macOS. + Build with support for Bonjour automatic service discovery. + This requires Bonjour support in your operating system. + Recommended on macOS. @@ -1031,101 +1149,61 @@ su - postgres - Utilise libxslt pour construire le module . Le - module contrib/xml2 se base sur cette - bibliothèque pour réaliser les transformations XSL du XML. + Construit avec libxslt, activant le module to perform XSL transformations of XML. + must be specified as well. + + - - - - - Désactive le passage par valeur des valeurs float4, - entraînant leur passage par référence à la place. - Cette option a un coût en performance, mais peut être nécessaire pour - maintenir la compatibilité avec des anciennes fonctions créées par - l'utilisateur qui sont écrites en C et utilisent la convention d'appel - version 0. Une meilleure solution à long terme est - de mettre à jour toutes ces fonctions pour utiliser la convention d'appel - version 1. - - - + + Anti-Features - - - - - Désactive le passage par valeur des valeurs float8, - entraînant leur passage par référence à la place. - Cette option a un coût en performance, mais peut être nécessaire pour - maintenir la compatibilité avec des anciennes fonctions créées par - l'utilisateur qui sont écrites en C et utilisent la convention d'appel - version 0. Une meilleure solution à long terme est - de mettre à jour toutes ces fonctions pour utiliser la convention d'appel - version 1. - Notez que cette option n'affecte pas que float8, mais aussi int8 et - quelques types apparentés comme timestamp. - Sur les plateformes 32 bits, - est la valeur par défaut, et il n'est pas permis de sélectionner - . - - - + + The options described in this section allow disabling + certain PostgreSQL features that are built + by default, but which might need to be turned off if the required + software or system features are not available. Using these options is + not recommended unless really necessary. + + - + - Indique la taille d'un segment, en gigaoctets. - La valeur par défaut est de 1 gigaoctet, valeur considérée comme sûre - pour toutes les plateformes prises en charge. - Les grandes tables sont divisées en plusieurs fichiers du système - d'exploitation, chacun de taille égale à la taille de segment. - Cela évite les problèmes avec les limites de tailles de fichiers qui - existent sur de nombreuses plateformes. Si votre système d'exploitation - supporte les fichiers de grande taille (largefile), - ce qui est le cas de la plupart d'entre eux de nos jours, vous pouvez - utiliser une plus grande taille de segment. Cela peut être utile - pour réduire le nombre de descripteurs de fichiers qui peuvent être - utilisés lors de travail sur des très grandes tables. - Attention à ne pas sélectionner une valeur plus grande que ce qui est - supporté par votre plateforme et le(s) système(s) de fichiers que - vous prévoyez d'utiliser. D'autres outils que vous pourriez vouloir utiliser, - tels que tar, pourraient aussi limiter la - taille maximum utilisable pour un fichier. - Il est recommandé, même si pas vraiment nécessaire, que cette valeur - soit une puissance de 2. - Notez que changer cette valeur impose de faire un initdb. + Prevents use of the Readline library + (and libedit as well). This option disables + command-line editing and history in + psql. - + - Indique la taille d'un bloc, en kilooctets. C'est - l'unité de stockage et d'entrée/sortie dans les tables. La valeur - par défaut, 8 kilooctets, est appropriée pour la plupart des cas ; - mais d'autres valeurs peuvent être utilisées dans des cas particuliers. - Cette valeur doit être une puissance de 2 entre 1 et 32 (kilooctets). - Notez que changer cette valeur impose de faire un initdb. + Favors the use of the BSD-licensed libedit library + rather than GPL-licensed Readline. This option + is significant only if you have both libraries installed; the + default in that case is to use Readline. - + - Indique la taille d'un bloc WAL, en kilooctets. C'est - l'unité de stockage et d'entrée/sortie dans le journal des transactions. La valeur - par défaut, 8 kilooctets, est appropriée pour la plupart des cas ; - mais d'autres valeurs peuvent être utilises dans des cas particuliers. - La valeur doit être une puissance de 2 comprise entre 1 et 64 (kilooctets). + + zlib + + Prevents use of the Zlib library. + This disables + support for compressed archives in pg_dump + and pg_restore. @@ -1137,7 +1215,7 @@ su - postgres Autorise le succès de la construction y compris lorsque PostgreSQL n'a pas le support spinlock du CPU pour la plateforme. Ce manque de support - résultera en des performances faibles ; du coup, cette option + résultera en des performances très faibles ; du coup, cette option devra seulement être utilisée si la construction échoue et vous informe du manque de support de spinlock sur votre plateforme. Si cette option est requise pour construire PostgreSQL sur votre @@ -1147,6 +1225,18 @@ su - postgres + + + + + Disable use of CPU atomic operations. This option does nothing on + platforms that lack such operations. On platforms that do have + them, this will result in poor performance. This option is only + useful for debugging or making performance comparisons. + + + + @@ -1154,10 +1244,51 @@ su - postgres Désactive la sécurité des threads pour les bibliothèques clients. Ceci empêche les threads concurrents dans les programmes libpq et ECPG - de contrôler en toute sécurité leurs pointeurs de connexion privés. + de contrôler en toute sécurité leurs pointeurs de connexion privés. Use this only on platforms + with deficient threading support. + + + + + Build Process Details + + + + + + + DIRECTORIES is a colon-separated list of + directories that will be added to the list the compiler + searches for header files. If you have optional packages + (such as GNU Readline) installed in a non-standard + location, + you have to use this option and probably also the corresponding + option. + + + Example: --with-includes=/opt/gnu/include:/usr/sup/include. + + + + + + + + + DIRECTORIES is a colon-separated list of + directories to search for libraries. You will probably have + to use this option (and the corresponding + option) if you have packages + installed in non-standard locations. + + + Example: --with-libraries=/opt/gnu/lib:/usr/sup/lib. + + + @@ -1204,21 +1335,164 @@ su - postgres - + - - zlib - - Évite l'utilisation de la bibliothèque Zlib. Cela - désactive le support des archives compressées dans - pg_dump et pg_restore. - Cette option est seulement là pour les rares systèmes qui ne - disposent pas de cette bibliothèque. + Append STRING to the PostgreSQL version number. You + can use this, for example, to mark binaries built from unreleased Git + snapshots or containing custom patches with an extra version string, + such as a git describe identifier or a + distribution package release number. + + + + + Do not mark PostgreSQL's executables + to indicate that they should search for shared libraries in the + installation's library directory (see ). + On most platforms, this marking uses an absolute path to the + library directory, so that it will be unhelpful if you relocate + the installation later. However, you will then need to provide + some other way for the executables to find the shared libraries. + Typically this requires configuring the operating system's + dynamic linker to search the library directory; see + for more detail. + + + + + + + + + + Miscellaneous + + + It's fairly common, particularly for test builds, to adjust the + default port number with . + The other options in this section are recommended only for advanced + users. + + + + + + + + + Set NUMBER as the default port number for + server and clients. The default is 5432. The port can always + be changed later on, but if you specify it here then both + server and clients will have the same default compiled in, + which can be very convenient. Usually the only good reason + to select a non-default value is if you intend to run multiple + PostgreSQL servers on the same machine. + + + + + + + + + The default name of the Kerberos service principal used + by GSSAPI. + postgres is the default. There's usually no + reason to change this unless you are building for a Windows + environment, in which case it must be set to upper case + POSTGRES. + + + + + + + + + Set the segment size, in gigabytes. Large tables are + divided into multiple operating-system files, each of size equal + to the segment size. This avoids problems with file size limits + that exist on many platforms. The default segment size, 1 gigabyte, + is safe on all supported platforms. If your operating system has + largefile support (which most do, nowadays), you can use + a larger segment size. This can be helpful to reduce the number of + file descriptors consumed when working with very large tables. + But be careful not to select a value larger than is supported + by your platform and the file systems you intend to use. Other + tools you might wish to use, such as tar, could + also set limits on the usable file size. + It is recommended, though not absolutely required, that this value + be a power of 2. + Note that changing this value breaks on-disk database compatibility, + meaning you cannot use pg_upgrade to upgrade to + a build with a different segment size. + + + + + + + + + Set the block size, in kilobytes. This is the unit + of storage and I/O within tables. The default, 8 kilobytes, + is suitable for most situations; but other values may be useful + in special cases. + The value must be a power of 2 between 1 and 32 (kilobytes). + Note that changing this value breaks on-disk database compatibility, + meaning you cannot use pg_upgrade to upgrade to + a build with a different block size. + + + + + + + + + Set the WAL block size, in kilobytes. This is the unit + of storage and I/O within the WAL log. The default, 8 kilobytes, + is suitable for most situations; but other values may be useful + in special cases. + The value must be a power of 2 between 1 and 64 (kilobytes). + Note that changing this value breaks on-disk database compatibility, + meaning you cannot use pg_upgrade to upgrade to + a build with a different WAL block size. + + + + + + + + + + Developer Options + + + Most of the options in this section are only of interest for + developing or debugging PostgreSQL. + They are not recommended for production builds, except + for , which can be useful to enable + detailed bug reports in the unlucky event that you encounter a bug. + On platforms supporting DTrace, + may also be reasonable to use in production. + + + + When building an installation that will be used to develop code inside + the server, it is recommended to use at least the + options + and . + + + + @@ -1237,6 +1511,50 @@ su - postgres + + + + + Enables assertion checks in the server, which test for + many cannot happen conditions. This is invaluable for + code development purposes, but the tests can slow down the + server significantly. + Also, having the tests turned on won't necessarily enhance the + stability of your server! The assertion checks are not categorized + for severity, and so what might be a relatively harmless bug will + still lead to server restarts if it triggers an assertion + failure. This option is not recommended for production use, but + you should have it on for development work or when running a beta + version. + + + + + + + + + Enable tests using the Perl TAP tools. This requires a Perl + installation and the Perl module IPC::Run. + See for more information. + + + + + + + + + Enables automatic dependency tracking. With this option, the + makefiles are set up so that all affected object files will + be rebuilt when any header file is changed. This is useful + if you are doing development work, but is just wasted overhead + if you intend only to compile once and install. At present, + this option only works with GCC. + + + + @@ -1259,44 +1577,12 @@ su - postgres En cas d'utilisation de GCC, tous les programmes et bibliothèques sont compilés pour qu'elles puissent être profilées. À la sortie du processus serveur, un sous-répertoire sera créé pour contenir le - fichier gmon.out à utiliser pour le profilage. + fichier gmon.out contenant les données de profilage. Cette option est à utiliser uniquement avec GCC lors d'un développement. - - - - - Permet la vérification des assertions par le - serveur qui teste de nombreux cas de conditions - impossibles. Ce qui est inestimable dans le cas de - développement, mais les tests peuvent ralentir sensiblement le - système. Activer cette option n'influe pas sur la stabilité de - votre serveur ! Les assertions vérifiées ne sont pas classées - par ordre de sévérité et il se peut qu'un bogue anodin fasse - redémarrer le serveur s'il y a un échec de vérification. Cette - option n'est pas recommandée dans un environnement de production - mais vous devriez l'utiliser lors de développement ou pour les - versions béta. - - - - - - - - - Active la recherche automatique des dépendances. Avec cette option, - les fichiers makefile sont appelés pour recompiler les fichiers objet - dès qu'un fichier d'en-tête est modifié. C'est pratique si vous faites - du développement, mais inutile si vous ne voulez que compiler une fois - et installer. Pour le moment, cette option ne fonctionne qu'avec GCC. - - - - @@ -1315,7 +1601,7 @@ su - postgres d'environnement DTRACE doit être configurée. Ceci sera souvent nécessaire car dtrace est typiquement installé sous /usr/sbin, qui pourrait ne pas être - dans le chemin. + dans votre PATH. @@ -1323,7 +1609,7 @@ su - postgres peuvent être indiquées dans la variable d'environnement DTRACEFLAGS pour le programme dtrace. Sur Solaris, pour inclure le support de DTrace dans un exécutable 64-bit, ajoutez - l'option DTRACEFLAGS="-64" pour configure. Par + l'option DTRACEFLAGS="-64". Par exemple, en utilisant le compilateur GCC : ./configure CC='gcc -m64' --enable-dtrace DTRACEFLAGS='-64' ... @@ -1333,24 +1619,44 @@ su - postgres - - - - - Active les tests utilisant les outils TAP de Perl. Cela nécessite une - installation de Perl et de son module IPC::Run. - Voir - pour plus d'informations. - - - - + + + + + <filename>configure</filename> Environment Variables + + + configure environment variables + + In addition to the ordinary command-line options described above, + configure responds to a number of environment + variables. + You can specify environment variables on the + configure command line, for example: + +./configure CC=/opt/bin/gcc CFLAGS='-O2 -pipe' + + In this usage an environment variable is little different from a + command-line option. + You can also set such variables beforehand: + +export CC=/opt/bin/gcc +export CFLAGS='-O2 -pipe' +./configure + + This usage can be convenient because many programs' configuration + scripts respond to these variables in similar ways. + + + + The most commonly used of these environment variables are + CC and CFLAGS. Si vous préférez utiliser un compilateur C différent de ceux listés par configure, positionnez la variable - d'environnement CC pour qu'elle pointe sur le compilateur de + CC pour qu'elle pointe sur le compilateur de votre choix. Par défaut, configure pointe sur gcc s'il est disponible, sinon il utilise celui par @@ -1360,15 +1666,9 @@ su - postgres - Les variables d'environnement peuvent être indiquées sur la ligne de - commande configure, par exemple : - ./configure CC=/opt/bin/gcc CFLAGS='-O2 -pipe' - - - - Voici une liste des variables importantes qui sont configurables de cette - façon : - + Voici une liste des variables importantes qui sont configurables de cette + façon : + @@ -1716,8 +2016,10 @@ su - postgres programme interpréteur Tcl. Il sera utilisé pour déterminer - les dépendances pour la construction de PL/Tcl, et il sera substitué - dans des scripts Tcl. + les dépendances pour la construction de PL/Tcl. + If this is not set, the following are probed in this + order: tclsh tcl tclsh8.6 tclsh86 tclsh8.5 tclsh85 + tclsh8.4 tclsh84. @@ -1758,14 +2060,6 @@ su - postgres - - Lors de l'écriture de code à l'intérieur du serveur, il est recommandé - d'utiliser les options (qui active - un grand nombre de vérifications d'erreur à l'exécution) et - (qui améliore l'utilité des outils - de débogage) de configure. - - Si vous utilisez GCC, il est préférable de construire avec un niveau d'optimisation d'au moins parce que désactiver @@ -1790,185 +2084,13 @@ su - postgres chaque fois. - - - - Compilation - - - Pour démarrer la compilation, saisissez soit -make -make all - (Rappelez-vous d'utiliser GNU - make). La compilation prendra quelques minutes, - selon votre matériel. La dernière ligne affichée devrait être -All of PostgreSQL successfully made. Ready to install. - - - - Si vous voulez lancer la construction à partir d'un autre fichier - makefile, vous devez configurer MAKELEVEL ou - l'initialiser à zéro, par exemple ainsi : - -build-postgresql: - $(MAKE) -C postgresql MAKELEVEL=0 all - - Ne pas le faire amène des messages d'erreur étranges, typiquement sur des - fichiers d'en-tête manquants. - - - - Si vous voulez construire tout ce qui peut être construit, ceci incluant la - documentation (HTML et pages man) et les modules supplémentaires - (contrib), saisissez à la place : - -make world - - La dernière ligne affichée doit être : - -PostgreSQL, contrib, and documentation successfully made. Ready to install. - - - - - - Tests de régression - - - tests de régression - - - - Si vous souhaitez tester le serveur nouvellement compilé avant de - l'installer, vous pouvez exécuter les tests de régression à ce moment. Les - tests de régression sont une suite de tests qui vérifient que - PostgreSQL fonctionne sur votre machine tel que les - développeurs l'espèrent. Saisissez - make check - (cela ne fonctionne pas en tant que root ; faites-le en tant - qu'utilisateur sans droits). - Le contient - des détails sur l'interprétation des résultats de ces tests. Vous pouvez - les répéter autant de fois que vous le voulez en utilisant la même - commande. - - - - - Installer les fichiers - - - - Si vous mettez à jour une version existante, assurez-vous d'avoir bien lu - - qui donne les instructions sur la mise à jour d'un - cluster. - - - - - Pour installer PostgreSQL, saisissez -make install - Cela installera les fichiers dans les répertoires spécifiés dans - l'. Assurez-vous d'avoir les droits appropriés - pour écrire dans ces répertoires. Normalement, vous avez besoin d'être - superutilisateur pour cette étape. Une alternative consiste à créer les - répertoires cibles à l'avance et à leur donner les droits appropriés. - - - - Pour installer la documentation (HTML et pages man), saisissez : - -make install-docs - - - - - Si vous construisez tout, saisissez ceci à la place : - -make install-world - - Cela installe aussi la documentation. - - - - Vous pouvez utiliser make install-strip en lieu et - place de make install pour dépouiller l'installation - des exécutables et des bibliothèques. Cela économise un peu d'espace disque. - Si vous avez effectué la compilation en mode de débogage, ce dépouillage - l'enlèvera, donc ce n'est à faire seulement si ce mode n'est plus - nécessaire. install-strip essaie d'être raisonnable - en sauvegardant de l'espace disque mais il n'a pas une connaissance - parfaite de la façon de dépouiller un exécutable de tous les octets - inutiles. Ainsi, si vous voulez sauvegarder le maximum d'espace disque, vous - devrez faire le travail à la main. - - - - L'installation standard fournit seulement les fichiers en-têtes nécessaires - pour le développement d'applications clientes ainsi que pour le développement - de programmes côté serveur comme des fonctions personnelles ou des - types de données écrits en C (avant PostgreSQL 8.0, une - commande make install-all-headers séparée était nécessaire pour - ce dernier point, mais cette étape a été intégrée à l'installation standard). - - - - Installation du client uniquement : - - Si vous voulez uniquement installer les applications clientes et les - bibliothèques d'interface, alors vous pouvez utilisez ces commandes : - make -C src/bin install -make -C src/include install -make -C src/interfaces install -make -C doc install - src/bin comprend quelques exécutables utilisés seulement - par le serveur mais ils sont petits. - - - - - - - Désinstallation : - - Pour désinstaller, utilisez la commande make - uninstall. Cependant, cela ne supprimera pas les répertoires créés. - - - - - Nettoyage : - - - Après l'installation, vous pouvez libérer de l'espace en supprimant les - fichiers issus de la compilation des répertoires sources à l'aide de la - commande make clean. Cela conservera les fichiers créés par - la commande configure, ainsi vous pourrez tout recompiler - ultérieurement avec make. Pour remettre l'arborescence - source dans l'état initial, utilisez make distclean. - Si vous voulez effectuer la compilation pour diverses plateformes à partir - des mêmes sources vous devrez d'abord refaire la configuration à chaque - fois (autrement, utilisez un répertoire de construction séparé pour chaque - plateforme, de façon à ce que le répertoire des sources reste inchangé). - - - - - Si vous avez compilé et que vous vous êtes rendu compte que les options de - configure sont fausses ou si vous changez quoi que ce soit que - configure prenne en compte (par exemple, la mise à jour - d'applications), alors faire un make distclean avant de - reconfigurer et recompiler est une bonne idée. Sans ça, vos changements dans - la configuration ne seront pas répercutés partout où il faut. - + Initialisation post-installation - + Bibliothèques partagées @@ -2138,7 +2260,7 @@ export MANPATH PostgreSQL doit fonctionner sur les systèmes d'exploitation suivants : Linux (toutes les distributions récentes), - Windows (Win2000 SP4 et ultérieures), FreeBSD, OpenBSD, NetBSD, macOS, + Windows (XP et ultérieures), FreeBSD, OpenBSD, NetBSD, macOS, AIX, HP/UX et Solaris. D'autres systèmes style Unix peuvent aussi fonctionner mais n'ont pas été récemment testés. Dans la plupart des cas, toutes les architectures processeurs supportées par diff --git a/postgresql/intarray.xml b/postgresql/intarray.xml index 7e79587f9..96b9c5b42 100644 --- a/postgresql/intarray.xml +++ b/postgresql/intarray.xml @@ -29,6 +29,12 @@ les données sont traitées comme s'il y avait un tableau linéaire. + + This module is considered trusted, that is, it can be + installed by non-superusers who have CREATE privilege + on the current database. + + Fonctions et opérateurs d'<filename>intarray</filename> @@ -40,196 +46,325 @@ Fonctions <filename>intarray</filename> - - - - - Fonction - Type en retour - Description - Exemple - Résultat - - - - - - icount(int[])icount - int - nombre d'éléments dans un tableau - icount('{1,2,3}'::int[]) - 3 - - - - sort(int[], text dir)sort - int[] - tri du tableau — dir doit valoir asc ou desc - sort('{1,2,3}'::int[], 'desc') - {3,2,1} - - - - sort(int[]) - int[] - tri en ordre ascendant - sort(array[11,77,44]) - {11,44,77} - - - - sort_asc(int[])sort_asc - int[] - tri en ordre descendant - - - - - - sort_desc(int[])sort_desc - int[] - tri en ordre descendant - - - - - - uniq(int[])uniq - int[] - supprime les duplicats adjacents - uniq(sort('{1,2,3,2,1}'::int[])) - {1,2,3} - - - - idx(int[], int item)idx - int - index du premier élément correspondant à - item (0 si aucune correspondance) - idx(array[11,22,33,22,11], 22) - 2 - - - - subarray(int[], int start, int len)subarray - int[] - portion du tableau commençant à la position start, de longueur len - subarray('{1,2,3,2,1}'::int[], 2, 3) - {2,3,2} - - - - subarray(int[], int start) - int[] - portion du tableau commençant à la position start - subarray('{1,2,3,2,1}'::int[], 2) - {2,3,2,1} - - - - intset(int)intset - int[] - crée un tableau à un élément - intset(42) - {42} - - + + + + + Function + + + Description + + + Example(s) + + + + + + + + icount + icount ( integer[] ) + integer + + + Returns the number of elements in the array. + + + icount('{1,2,3}'::integer[]) + 3 + + + + + + sort + sort ( integer[], dir text ) + integer[] + + + Sorts the array in either ascending or descending order. + dir must be asc + or desc. + + + sort('{1,3,2}'::integer[], 'desc') + {3,2,1} + + + + + + sort ( integer[] ) + integer[] + + + sort_asc + sort_asc ( integer[] ) + integer[] + + + Sorts in ascending order. + + + sort(array[11,77,44]) + {11,44,77} + + + + + + sort_desc + sort_desc ( integer[] ) + integer[] + + + Sorts in descending order. + + + sort_desc(array[11,77,44]) + {77,44,11} + + + + + + uniq + uniq ( integer[] ) + integer[] + + + Removes adjacent duplicates. + + + uniq(sort('{1,2,3,2,1}'::integer[])) + {1,2,3} + + + + + + idx + idx ( integer[], item integer ) + integer + + + Returns index of the first array element + matching item, or 0 if no match. + + + idx(array[11,22,33,22,11], 22) + 2 + + + + + + subarray + subarray ( integer[], start integer, len integer ) + integer[] + + + Extracts the portion of the array starting at + position start, with len + elements. + + + subarray('{1,2,3,2,1}'::integer[], 2, 3) + {2,3,2} + + + + + + subarray ( integer[], start integer ) + integer[] + + + Extracts the portion of the array starting at + position start. + + + subarray('{1,2,3,2,1}'::integer[], 2) + {2,3,2,1} + + + + + + intset + intset ( integer ) + integer[] + + + Makes a single-element array. + + + intset(42) + {42} + +
Opérateurs d'<filename>intarray</filename> - - - - - Opérateur - Renvoie - Description - - - - - - int[] && int[] - boolean - surcharge — true si les tableaux ont - au moins un élément en commun - - - int[] @> int[] - boolean - contient — true si le tableau gauche - contient le tableau droit - - - int[] <@ int[] - boolean - est contenu — true si le tableau gauche - est contenu dans le tableau droit - - - # int[] - int - nombre d'éléments dans le tableau - - - int[] # int - int - index (identique à la fonction idx) - - - int[] + int - int[] - pousse l'élément dans le tableau (l'ajoute à la fin du - tableau) - - - int[] + int[] - int[] - concaténation de tableau (le tableau à droite est ajouté à la - fin du tableau à gauche) - - - int[] - int - int[] - supprime les entrée correspondant à l'argument droit du - tableau - - - int[] - int[] - int[] - supprime les éléments du tableau droit à partir de la - gauche - - - int[] | int - int[] - union des arguments - - - int[] | int[] - int[] - union des tableaux - - - int[] & int[] - int[] - intersection des tableaux - - - int[] @@ query_int - boolean - true si le tableau satisfait la requête (voir - ci-dessous) - - - query_int ~~ int[] - boolean - true si le tableau satisfait la requête - (commutateur de @@) - + + + + + Operator + + + Description + + + + + + + + integer[] && integer[] + boolean + + + Do arrays overlap (have at least one element in common)? + + + + + + integer[] @> integer[] + boolean + + + Does left array contain right array? + + + + + + integer[] <@ integer[] + boolean + + + Is left array contained in right array? + + + + + + # integer[] + integer + + + Returns the number of elements in the array. + + + + + + integer[] # integer + integer + + + Returns index of the first array element + matching the right argument, or 0 if no match. + (Same as idx function.) + + + + + + integer[] + integer + integer[] + + + Adds element to end of array. + + + + + + integer[] + integer[] + integer[] + + + Concatenates the arrays. + + + + + + integer[] - integer + integer[] + + + Removes entries matching the right argument from the array. + + + + + + integer[] - integer[] + integer[] + + + Removes elements of the right array from the left array. + + + + + + integer[] | integer + integer[] + + + Computes the union of the arguments. + + + + + + integer[] | integer[] + integer[] + + + Computes the union of the arguments. + + + + + + integer[] & integer[] + integer[] + + + Computes the intersection of the arguments. + + + + + + integer[] @@ query_int + boolean + + + Does array satisfy query? (see below) + + + + + + query_int ~~ integer[] + boolean + + + Does array satisfy query? (commutator of @@) + +
@@ -276,7 +411,7 @@ - Deux classes d'opérateur pour index GiST sont fournies : + Deux classes d'opérateur pour index GiST, avec paramètres, sont fournies : gist__int_ops (utilisé par défaut) convient pour des tableaux d'ensembles de données de petites et moyennes tailles alors que gist__intbig_ops utilise une signature plus importante @@ -286,6 +421,26 @@ une compression interne à perte. + + gist__int_ops approximates an integer set as an array of + integer ranges. Its optional integer parameter numranges + determines the maximum number of ranges in + one index key. The default value of numranges is 100. + Valid values are between 1 and 253. Using larger arrays as GiST index + keys leads to a more precise search (scanning a smaller fraction of the index and + fewer heap pages), at the cost of a larger index. + + + + gist__intbig_ops approximates an integer set as a bitmap + signature. Its optional integer parameter siglen + determines the signature length in bytes. + The default signature length is 16 bytes. Valid values of signature length + are between 1 and 2024 bytes. Longer signatures lead to a more precise + search (scanning a smaller fraction of the index and fewer heap pages), at + the cost of a larger index. + + Il y a aussi une classe d'opérateur GIN,gin__int_ops supportant les mêmes opérateurs, qui n'est pas disponible par défaut. @@ -304,8 +459,8 @@ -- un message peut être dans un ou plusieurs sections CREATE TABLE message (mid INT PRIMARY KEY, sections INT[], ...); --- crée un index spécialisé -CREATE INDEX message_rdtree_idx ON message USING GIST (sections gist__int_ops); +-- crée un index spécialisé with sigature length of 32 bytes +CREATE INDEX message_rdtree_idx ON message USING GIST (sections gist__int_ops(siglen=32)); -- sélectionne les messages dans la section 1 ou 2 - opérateur OVERLAP SELECT message.mid FROM message WHERE message.sections && '{1,2}'; diff --git a/postgresql/isn.xml b/postgresql/isn.xml index e9e411944..c59f24bf6 100644 --- a/postgresql/isn.xml +++ b/postgresql/isn.xml @@ -28,6 +28,12 @@ future. + + This module is considered trusted, that is, it can be + installed by non-superusers who have CREATE privilege + on the current database. + + Types de données @@ -39,6 +45,8 @@ Types de données <filename>isn</filename> + + Type de données @@ -247,39 +255,53 @@
Fonctions de <filename>isn</filename> - - - - Fonction - Retour - Description - - - - - - isn_weak(boolean)isn_weak - boolean - Configure le mode de saisie faible (renvoie le nouveau - paramétrage) - - - isn_weak() - boolean - Récupère le statut actuel du mode faible - - - make_valid(isn)make_valid - isn - Valide un nombre invalide (efface le drapeau d'invalidité) - - - is_valid(isn)is_valid - boolean - Vérifie la présence du drapeau d'invalidité - - - + + + + + isn_weak + isn_weak ( boolean ) + boolean + + + Configure le mode de saisie faible et renvoie le nouveau + paramétrage. + + + + + + isn_weak () + boolean + + + Renvoie le statut actuel du mode faible + + + + + + make_valid + make_valid ( isn ) + isn + + + Valide un nombre invalide (efface le drapeau d'invalidité). + + + + + + is_valid + is_valid ( isn ) + boolean + + + Vérifie la présence du drapeau d'invalidité + + + +
@@ -407,7 +429,7 @@ SELECT isbn13(id) FROM test; Auteur - Germán Méndez Bravo (Kronuz), 2004 - 2006 + Germán Méndez Bravo (Kronuz), 2004–2006 diff --git a/postgresql/json.xml b/postgresql/json.xml index c9ce02868..9906e35f9 100644 --- a/postgresql/json.xml +++ b/postgresql/json.xml @@ -63,8 +63,8 @@ - PostgreSQL n'autorise qu'un seul encodage de - caractères par base de données. Il n'est donc pas possible pour les types + RFC 7159 specifies that JSON strings should be encoded in UTF8. + Il n'est donc pas possible pour les types JSON de se conformer de manière rigoureuse à la spécification JSON, à moins que l'encodage de la base de données soit UTF8. Tenter d'inclure directement des caractères qui ne peuvent pas être représentés dans l'encodage de la base @@ -80,9 +80,8 @@ sont vérifiés uniquement pour l'exactitude de la syntaxe (qui est quatre chiffres hexadécimaux précédés d'un \u). Toutefois, la fonction d'entrée pour jsonb est plus stricte : elle - interdit les échappements Unicode pour les caractères autres que ASCII (ceux - au-delà de U+007F) à moins que l'encodage de la base de - données soit UTF8. Le type jsonb rejette aussi + interdit les échappements Unicode that cannot be represented in the database + encoding. Le type jsonb rejette aussi \u0000 (parce qu'il ne peut pas être représenté avec le type text de PostgreSQL), et il insiste pour que chaque utilisation de paires de substitution Unicode désignant @@ -102,10 +101,8 @@ jsonb. Le fait que la fonction d'entrée json ne fasse pas ces vérifications peut être considéré comme un artefact historique, bien qu'elle n'autorise pas un simple stockage (sans - traitement) d'échappements Unicode JSON dans une base de données en encodage - non UTF8. En général, il est préférable d'éviter de mélanger des - échappements Unicode en JSON avec une base de données en encodage non UTF8 - si possible. + traitement) d'échappements Unicode JSON in a database encoding that does + not support the represented characters. @@ -141,6 +138,9 @@ Types primitifs JSON et types <productname>PostgreSQL</productname> correspondants + + + Type primitif JSON @@ -152,8 +152,8 @@ string text - \u0000 est interdit, tout comme les échappements - Unicode non-ASCII si l'encodage de la base de données n'est pas UTF8 + \u0000 est interdit, as are Unicode escapes + representing characters not available in the database encoding number @@ -645,6 +645,13 @@ SELECT jdoc->'guid', jdoc->'name' FROM api WHERE jdoc @> '{"tags": ["qu vous les utilisez, les valeurs jsonb sont transformées en dictionnaires, listes et scalaires Python, suivant le cas. + + + Of these extensions, jsonb_plperl is + considered trusted, that is, it can be installed by + non-superusers who have CREATE privilege on the + current database. The rest require superuser privilege to install. + @@ -666,8 +673,8 @@ SELECT jdoc->'guid', jdoc->'name' FROM api WHERE jdoc @> '{"tags": ["qu La sémantique des prédicats et opérateurs suit généralement celle du SQL. - Dans le même temps, il propose la manière la plus naturelle de travailler - avec les données JSON. En effet, la syntaxe SQL/JSONpath utilise certaines des + Dans le même temps, il propose une manière naturelle de travailler + avec les données JSON. En effet, la syntaxe SQL/JSONpath utilise certaines conventions JavaScript : @@ -718,7 +725,7 @@ SELECT jdoc->'guid', jdoc->'name' FROM api WHERE jdoc @> '{"tags": ["qu Une expression path consiste en une séquence d'éléments path, qui peuvent - être les suivants : + être une des suivants : @@ -739,7 +746,7 @@ SELECT jdoc->'guid', jdoc->'name' FROM api WHERE jdoc @> '{"tags": ["qu Opérateurs et méthodes jsonpath listés dans - + . @@ -768,7 +775,7 @@ SELECT jdoc->'guid', jdoc->'name' FROM api WHERE jdoc @> '{"tags": ["qu $ - Une variable qui représente le texte JSON à requêter + Une variable qui représente le texte JSON en cours de traitement (l'élément de contexte). @@ -777,7 +784,7 @@ SELECT jdoc->'guid', jdoc->'name' FROM api WHERE jdoc @> '{"tags": ["qu Une variable nommée. Le paramètre vars présent dans de nombreuses fonctions de traitement JSON, permet de définir sa valeur. - Voir ainsi que les notes + Voir pour plus de détails. @@ -795,6 +802,8 @@ SELECT jdoc->'guid', jdoc->'name' FROM api WHERE jdoc @> '{"tags": ["qu
Accesseurs <type>jsonpath</type> + + Opérateurs d'accès @@ -814,7 +823,7 @@ SELECT jdoc->'guid', jdoc->'name' FROM api WHERE jdoc @> '{"tags": ["qu La valeur accédée renvoie un objet avec la clé spécifiée. - Si le nom de la clé est une variable nommée qui commence avec + Si le nom de la clé correspond à certaines variables nommées commençant avec $ ou qui n'est pas compatible avec les règles JavaScript d'un identifiant, ce nom doit être entouré avec des guillemets double comme une chaîne de caractères. @@ -862,8 +871,8 @@ SELECT jdoc->'guid', jdoc->'name' FROM api WHERE jdoc @> '{"tags": ["qu - Identique à .**, mais avec un filtre au dessus - des niveaux d'imbrication de l'arborescence JSON. + Identique à .**, but selects only the specified + levels of the JSON hierarchy. Les niveaux d'imbrication sont spécifiés en entier. Le niveau zéro correspond à l'objet courant. Pour accèder au dernier niveau d'imbrication, vous pouvez utiliser diff --git a/postgresql/legal.xml b/postgresql/legal.xml index bd9ec9342..b767a2c82 100644 --- a/postgresql/legal.xml +++ b/postgresql/legal.xml @@ -7,7 +7,7 @@ 2020 - 1996-2020 + 1996–2020 The PostgreSQL Global Development Group @@ -15,12 +15,12 @@ Legal Notice - PostgreSQL is Copyright © 1996-2020 + PostgreSQL is Copyright © 1996–2020 by the PostgreSQL Global Development Group. - Postgres95 is Copyright © 1994-5 + Postgres95 is Copyright © 1994–5 by the Regents of the University of California. diff --git a/postgresql/libpq.xml b/postgresql/libpq.xml index eb03414ec..64d865229 100644 --- a/postgresql/libpq.xml +++ b/postgresql/libpq.xml @@ -5,7 +5,7 @@ révision $Revision$ --> - <application>libpq</application> - Bibliothèque C + <application>libpq</application> — Bibliothèque C libpq @@ -61,14 +61,15 @@ plusieurs connexions ouvertes sur des serveurs à un même moment (une raison de la faire est d'accéder à plusieurs bases de données). Chaque connexion est représentée par un objet - PGconnPGconn, obtenu avec la - fonction PQconnectdb, - PQconnectdbParams, ou PQsetdbLogin. Notez que - ces fonctions renverront toujours un pointeur d'objet non nul, sauf peut-être - dans un cas de manque de mémoire pour l'allocation de l'objet - PGconn. La fonction PQstatus - doit être appelée pour vérifier le code retour pour une connexion réussie - avant de lancer des requêtes via l'objet de connexion. + PGconnPGconn, + obtenu avec la fonction , ou . Notez que ces fonctions renverront toujours + un pointeur d'objet non nul, sauf peut-être dans un cas de manque de + mémoire pour l'allocation de l'objet PGconn. La + fonction doit être appelée pour vérifier + le code retour pour une connexion réussie avant de lancer des requêtes via + l'objet de connexion. @@ -115,7 +116,7 @@ - + PQconnectdbParamsPQconnectdbParams @@ -134,10 +135,10 @@ PGconn *PQconnectdbParams(const char * const *keywords, NULL. Le premier, keywords, est défini comme un tableau de chaînes, chacune étant un mot-clé. Le second, values, donne la valeur pour chaque mot-clé. - Contrairement à PQsetdbLogin ci-dessous, l'ensemble + Contrairement à ci-dessous, l'ensemble des paramètres peut être étendu sans changer la signature de la fonction donc son utilisation (ou ses versions non bloquantes, à savoir - PQconnectStartParams et + et PQconnectPoll) est recommendée pour les nouvelles applications. @@ -185,7 +186,7 @@ PGconn *PQconnectdbParams(const char * const *keywords, - + PQconnectdbPQconnectdb @@ -212,7 +213,7 @@ PGconn *PQconnectdbParams(const char * const *keywords, - + PQsetdbLoginPQsetdbLogin @@ -228,7 +229,7 @@ PGconn *PQconnectdbParams(const char * const *keywords, - C'est le prédécesseur de PQconnectdb avec un ensemble + C'est le prédécesseur de avec un ensemble fixe de paramètres. Cette fonction a les mêmes fonctionnalités sauf que les paramètres manquants seront toujours initialisés avec leur valeurs par défaut. Écrire NULL ou une chaîne vide pour un de ces @@ -240,13 +241,13 @@ PGconn *PQconnectdbParams(const char * const *keywords, a un préfixe URI de connexion valide, il est pris pour une chaîne conninfo exactement de la même façon que si elle était passée à - PQconnectdb, et le reste des paramètres est - ensuite appliqué comme spécifié dans PQconnectdbParams. + , et le reste des paramètres est + ensuite appliqué comme spécifié dans . - + PQsetdbPQsetdb @@ -260,14 +261,14 @@ PGconn *PQconnectdbParams(const char * const *keywords, - C'est une macro faisant appel à PQsetdbLogin avec des + C'est une macro faisant appel à avec des pointeurs nuls pour les paramètres login et pwd. Elle est fournie pour la compatibilité avec les très vieux programmes. - + PQconnectStartParamsPQconnectStartParams PQconnectStartPQconnectStart PQconnectPollPQconnectPoll @@ -290,27 +291,28 @@ PGconn *PQconnectdbParams(const char * const *keywords, pas bloqué sur les entrées/sorties distantes en demandant la connexion. Le but de cette approche est que l'attente de la fin des entrées/sorties peut se faire dans la boucle principale de l'application plutôt qu'à l'intérieur de - PQconnectdbParams ou PQconnectdb, et donc l'application peut gérer des opérations en + ou , + et donc l'application peut gérer des opérations en parallèle à d'autres activités. - Avec PQconnectStartParams, la connexion à la base + Avec , la connexion à la base de données est faite en utilisant les paramètres à partir des tableaux keywords et values, et contrôlée par expand_dbname, comme décrit dans - . + . Avec PQconnectStart, la connexion à la base de données est faite en utilisant les paramètres provenant de la chaîne conninfo comme décrit ci-dessus pour - PQconnectdb. + . - Ni PQconnectStartParams ni + Ni ni PQconnectStart ni PQconnectPoll ne bloqueront, aussi longtemps qu'un certain nombre de restrictions est respecté : @@ -326,7 +328,7 @@ PGconn *PQconnectdbParams(const char * const *keywords, - Si vous appelez PQtrace, assurez-vous que l'objet de + Si vous appelez , assurez-vous que l'objet de flux dans lequel vous enregistrez les traces ne bloquera pas. @@ -343,7 +345,7 @@ PGconn *PQconnectdbParams(const char * const *keywords, Pour commencer une demande de connexion non bloquante, appelez PQconnectStart ou - PQconnectStartParams. Si le résultat est nul, + . Si le résultat est nul, alors libpq a été incapable d'allouer une nouvelle structure PGconn. Sinon, un pointeur valide vers une structure PGconn est renvoyé @@ -356,7 +358,7 @@ PGconn *PQconnectdbParams(const char * const *keywords, Si PQconnectStart ou - PQconnectStartParams réussit, la prochaine étape + réussit, la prochaine étape est d'appeler souvent libpq de façon à ce qu'il continue la séquence de connexion. Utilisez PQsocket(conn) pour obtenir le descripteur de @@ -384,7 +386,7 @@ PGconn *PQconnectdbParams(const char * const *keywords, À tout moment pendant la connexion, le statut de cette connexion peut - être vérifié en appelant PQstatus. Si le résultat est + être vérifié en appelant . Si le résultat est CONNECTION_BAD, alors la procédure de connexion a échoué ; si, au contraire, elle renvoie CONNECTION_OK, alors la connexion est prête. Ces deux états sont détectables à partir de la valeur @@ -502,13 +504,13 @@ PGconn *PQconnectdbParams(const char * const *keywords, responsabilité de l'application de décider quand une période de temps excessive s'est écoulée. Sinon, PQconnectStart suivi par une boucle PQconnectPoll est équivalent à - PQconnectdb. + . Notez que quand PQconnectStart ou - PQconnectStartParams renvoient un pointeur non - NULL, vous devez appeler PQfinish quand vous en + renvoient un pointeur non + NULL, vous devez appeler quand vous en avez fini pour libérer la structure et tout bloc mémoire qui y est associé. Ceci doit être fait même si la tentative de connexion échoue ou est abandonnée. @@ -517,7 +519,7 @@ PGconn *PQconnectdbParams(const char * const *keywords, - + PQconndefaultsPQconndefaults @@ -544,7 +546,7 @@ typedef struct Renvoie un tableau d'options de connexion. Ceci pourrait être utilisé pour - déterminer toutes les options possibles de PQconnectdb + déterminer toutes les options possibles de et leur valeurs par défaut. La valeur de retour pointe vers un tableau de structures PQconninfoOption qui se termine avec une entrée utilisant un pointeur nul pour keyword. Le pointeur @@ -558,15 +560,15 @@ typedef struct Après le traitement du tableau d'options, libérez-le en le passant à la - fonction PQconninfoFree. Si cela n'est pas fait, un + fonction . Si cela n'est pas fait, un petit groupe de mémoire est perdu à chaque appel de - PQconndefaults. + . - + PQconninfoPQconninfo @@ -579,19 +581,19 @@ typedef struct Renvoie un tableau des options de connexion. Cette fonction peut être utilisée pour déterminer les valeurs de toutes les options de - PQconnectdb qui ont été utilisées pour se + qui ont été utilisées pour se connecter au serveur. La valeur renvoyée pointe vers un tableau de structures PQconninfoOption qui se termine avec une entrée possédant un pointeur keyword nul. - Toutes les notes ci-dessus pour PQconndefaults - s'appliquent aussi au résultat de PQconninfo. + Toutes les notes ci-dessus pour + s'appliquent aussi au résultat de . - + PQconninfoParsePQconninfoParse @@ -607,7 +609,7 @@ typedef struct Analyse une chaîne de connexion et renvoie les options résultantes dans un tableau ; renvoit NULL si un problème a été détecté avec la chaîne de connexion. Ceci peut être utilisé pour déterminer les - options de PQconnectdb dans la chaîne de connexion + options de dans la chaîne de connexion fournie. La valeur de retour pointe vers un tableau de structures PQconninfoOption et termine avec une entrée ayant un pointeur keyword nul. @@ -632,17 +634,17 @@ typedef struct Après avoir traité le tableau des options, libérez-le en le passant à - PQconninfoFree. Si ce n'est pas fait, de la mémoire - sera perdu à chaque appel à PQconninfoParse. + . Si ce n'est pas fait, de la mémoire + sera perdu à chaque appel à . Réciproquement, si une erreur survient et que errmsg n'est pas NULL, assurez-vous de libérer la chaîne d'erreur en utilisant - PQfreemem. + . - + PQfinishPQfinish @@ -654,15 +656,15 @@ typedef struct Notez que même si la connexion au serveur a échoué (d'après l'indication - de PQstatus), l'application devrait appeler - PQfinish pour libérer la mémoire utilisée par l'objet + de ), l'application devrait appeler + pour libérer la mémoire utilisée par l'objet PGconn. Le pointeur PGconn ne doit - pas être encore utilisé après l'appel à PQfinish. + pas être encore utilisé après l'appel à . - + PQresetPQreset @@ -680,7 +682,7 @@ typedef struct - + PQresetStartPQresetStart PQresetPollPQresetPoll @@ -700,15 +702,15 @@ typedef struct une nouvelle connexion sur le même serveur, en utilisant tous les paramètres précédemment utilisés. Ceci peut être utile pour revenir à un état normal après une erreur si une connexion est perdue. Ces fonctions diffèrent de - PQreset (ci-dessus) dans le fait qu'elles agissent + (ci-dessus) dans le fait qu'elles agissent d'une façon non bloquante. Ces fonctions souffrent des mêmes restrictions - que PQconnectStartParams, PQconnectStart + que , PQconnectStart et PQconnectPoll. Pour lancer une réinitialisation de la connexion, exécutez - PQresetStart. Si cette fonction 0, la réinitialisation + . Si cette fonction 0, la réinitialisation a échoué. Si elle renvoie 1, récupérez le résultat de la réinitialisation en utilisant PQresetPoll exactement de la même façon que vous auriez créé la connexion en utilisant @@ -717,13 +719,13 @@ typedef struct - + PQpingParamsPQpingParams - PQpingParams renvoie le statut du serveur. Elle + renvoie le statut du serveur. Elle accepte les mêmes paramètres de connexion que ceux de la fonction - PQconnectdbParams, décrite ci-dessus. Néanmoins, + , décrite ci-dessus. Néanmoins, il n'est pas nécessaire de fournir les bons nom d'utilisateur, mot de passe, ou nom de base de données pour obtenir le statut du serveur. Néanmoins, si des valeurs incorrectes sont fournies, le serveur @@ -738,7 +740,7 @@ typedef struct La fonction renvoie une des valeurs suivantes : - + PQPING_OK @@ -748,7 +750,7 @@ typedef struct - + PQPING_REJECT @@ -759,7 +761,7 @@ typedef struct - + PQPING_NO_RESPONSE @@ -772,7 +774,7 @@ typedef struct - + PQPING_NO_ATTEMPT @@ -789,13 +791,13 @@ typedef struct - + PQpingPQping - PQping renvoie l'état du serveur. Elle + renvoie l'état du serveur. Elle accepte les mêmes paramètres de connexion que ceux de la fonction - PQconnectdb, décrite ci-dessus. Néanmoins, + , décrite ci-dessus. Néanmoins, il n'est pas nécessaire de fournir les bons nom d'utilisateur, mot de passe, ou nom de base de données pour obtenir le statut du serveur; toutefois, si des valeurs incorrectes sont fournies, le serveur tracera @@ -807,7 +809,73 @@ typedef struct - Les valeurs de retour sont les mêmes que pour PQpingParams. + Les valeurs de retour sont les mêmes que pour . + + + + + + + PQsetSSLKeyPassHook_OpenSSLPQsetSSLKeyPassHook_OpenSSL + + + PQsetSSLKeyPassHook_OpenSSL lets an application override + libpq's default + handling of encrypted client certificate key files using + or interactive prompting. + + +void PQsetSSLKeyPassHook_OpenSSL(PQsslKeyPassHook_OpenSSL_type hook); + + + The application passes a pointer to a callback function with signature: + +int callback_fn(char *buf, int size, PGconn *conn); + + which libpq will then call instead of + its default PQdefaultSSLKeyPassHook_OpenSSL handler. The callback + should determine the password for the key and copy it to result-buffer + buf of size size. The string in + buf must be null-terminated. The callback must return the length of + the password stored in buf excluding the null terminator. + On failure, the callback should set buf[0] = '\0' and return 0. + See PQdefaultSSLKeyPassHook_OpenSSL in libpq's + source code for an example. + + + + If the user specified an explicit key location, + its path will be in conn->pgsslkey when the callback + is invoked. This will be empty if the default key path is being used. + For keys that are engine specifiers, it is up to engine implementations + whether they use the OpenSSL password callback or define their own handling. + + + + The app callback may choose to delegate unhandled cases to + PQdefaultSSLKeyPassHook_OpenSSL, + or call it first and try something else if it returns 0, or completely override it. + + + + The callback must not escape normal flow control with exceptions, + longjmp(...), etc. It must return normally. + + + + + + + PQgetSSLKeyPassHook_OpenSSLPQgetSSLKeyPassHook_OpenSSL + + + PQgetSSLKeyPassHook_OpenSSL returns the current + client certificate key password hook, or NULL + if none has been set. + + +PQsslKeyPassHook_OpenSSL_type PQgetSSLKeyPassHook_OpenSSL(void); + @@ -875,7 +943,7 @@ typedef struct - Le désignateur dURI peut être soit + Le désignateur d'URI peut être soit postgresql:// soit postgres://. Chacune des parties de l'URI est optionnelle. Les exemples suivants montrent des syntaxes valides pour @@ -898,10 +966,15 @@ typedef struct - L'encodage du signe pourcent peut être utilisé pour inclure des symboles - dotés d'une signification spéciale dans toutes les parties de - l'URI, par exemple en remplaçant = - avec %3D. + Connection URI needs to be encoded with + Percent-encoding + if it includes symbols with special meaning in any of its parts. + Here is an example where equal sign (=) is replaced + with %3D and whitespace character with + %20: + +postgresql://user@localhost:5433/mydb?options=-c%20synchronous_commit%3Doff + @@ -928,8 +1001,8 @@ typedef struct Le composant host est interprété de la façon décrite pour le paramètre . En particulier, une connexion par - socket de domaine Unix est choisi si la partie host est vide ou commence - par un slash. Dans tous les autres cas, une connexion TCP/IP est + socket de domaine Unix est choisi si la partie host est vide ou ressemble à un + nom de chemin absolu. Dans tous les autres cas, une connexion TCP/IP est démarrée. Cependant, notez que le slash est un caractère réservé dans la partie hiérarchique de l'URI. Donc, pour indiquer un répertoire non standard pour la socket de domaine Unix, il faut soit omettre d'indiquer le paramètre @@ -1013,17 +1086,19 @@ typedef struct Nom de l'hôte où se connecter.host - name Si un nom d'ĥôte commence avec un slash, il + name Si un nom d'hôte ressemble à un nom de chemin absolu, il spécifie une communication par domaine Unix plutôt qu'une communication TCP/IP ; la valeur est le nom du répertoire où le fichier socket - est stocké. Par défaut, quand + est stocké. (On Unix, an absolute path name begins with a + slash. On Windows, paths starting with drive letters are also + recognized.) Par défaut, quand host n'est pas spécifié ou est vide, il s'agit d'une communication par socket de domaine Unixsocket de domaine Unix dans /tmp (ou tout autre répertoire de socket spécifié lors de la construction de - PostgreSQL). Sur les machines sans sockets - de domaine Unix, la valeur par défaut est de se connecter à - localhost. + PostgreSQL). Sur Windows et sur les + machines sans socket de domaine Unix, la valeur par défaut est de se + connecter à localhost. Une liste de noms d'hôtes séparés par des virgules est aussi acceptée, @@ -1044,9 +1119,13 @@ typedef struct machine supporte IPv6, vous pouvez aussi utiliser ces adresses. La communication TCP/IP est toujours utilisée lorsqu'une chaîne non vide est spécifiée pour ce paramètre. + If this parameter is not specified, the value of host + will be looked up to find the corresponding IP address — or, if + host specifies an IP address, that value will be + used directly. - Utiliser hostaddr au lieu de host + Utiliser hostaddr permet à l'application d'éviter une résolution de nom, ce qui pourrait être important dans les applications avec des contraintes de temps. Cependant, un nom d'hôte est requis pour les méthodes @@ -1102,7 +1181,8 @@ typedef struct Sans un nom ou une adresse d'hôte, libpq se - connectera en utilisant un socket local de domaine Unix. Sur des machines + connectera en utilisant un socket local de domaine Unix. Sur Windows et + sur des machines sans sockets de domaine Unix, il tentera une connexion sur localhost. @@ -1175,6 +1255,28 @@ typedef struct + + channel_binding + + + This option controls the client's use of channel binding. A setting + of require means that the connection must employ + channel binding, prefer means that the client will + choose channel binding if available, and disable + prevents the use of channel binding. The default + is prefer if + PostgreSQL is compiled with SSL support; + otherwise the default is disable. + + + Channel binding is a method for the server to authenticate itself to + the client. It is only supported over SSL connections + with PostgreSQL 11 or later servers using + the SCRAM authentication method. + + + + connect_timeout @@ -1592,10 +1694,7 @@ typedef struct désactive la compression par défaut, et de nombreux systèmes d'exploitation la désactive aussi dans des versions précédentes, donc activer ce paramètre n'aura aucun effet si le serveur n'accepte - pas la compression. D'un autre côté, OpenSSL - avant la version 1.1.0 ne supporte pas la désactivation de la compression, - donc ce paramètre est ignoré sur ces versions, et l'utilisation de la - compression dépend du serveur. + pas la compression. @@ -1637,6 +1736,36 @@ typedef struct + + sslpassword + + + This parameter specifies the password for the secret key specified in + sslkey, allowing client certificate private keys + to be stored in encrypted form on disk even when interactive passphrase + input is not practical. + + + Specifying this parameter with any non-empty value suppresses the + Enter PEM pass phrase: + prompt that OpenSSL will emit by default when an encrypted client + certificate key is provided to libpq. + + + If the key is not encrypted this parameter is ignored. The parameter has no + effect on keys specified by OpenSSL engines unless the engine uses the + OpenSSL password callback mechanism for prompts. + + + There is no environment variable equivalent to this option, and no + facility for looking it up in .pgpass. It can be + used in a service file connection definition. Users with + more sophisticated uses should consider using openssl engines and + tools like PKCS#11 or USB crypto offload devices. + + + + sslrootcert @@ -1690,6 +1819,40 @@ typedef struct + + ssl_min_protocol_version + + + This parameter specifies the minimum SSL/TLS protocol version to allow + for the connection. Valid values are TLSv1, + TLSv1.1, TLSv1.2 and + TLSv1.3. The supported protocols depend on the + version of OpenSSL used, older versions + not supporting the most modern protocol versions. If not set, this + parameter is ignored and the connection will use the minimum bound + defined by the backend. + + + + + + ssl_max_protocol_version + + + This parameter specifies the maximum SSL/TLS protocol version to allow + for the connection. Valid values are TLSv1, + TLSv1.1, TLSv1.2 and + TLSv1.3. The supported protocols depend on the + version of OpenSSL used, older versions + not supporting the most modern protocol versions. If not set, this + parameter is ignored and the connection will use the maximum bound + defined by the backend, if set. Setting the maximum protocol version + is mainly useful for testing or if some component has issues working + with a newer protocol. + + + + krbsrvname @@ -1780,16 +1943,14 @@ typedef struct Les fonctions suivantes renvoient les valeurs des paramètres utilisés pour la connexion. Ces valeurs sont fixes pour la durée de vie de la connexion. Si une chaîne de connexion multi-hôtes est utilisée, les valeurs - de PQhost, PQport, et - PQpass peuvent changer si une nouvelle connexion est + de , et peuvent changer si une nouvelle connexion est établie en utilisant le même objet PGconn. Les autres valeurs sont figées pour la durée de vie de l'objet PGconn. - PGconn. - - + PQdbPQdb @@ -1800,7 +1961,7 @@ typedef struct - + PQuserPQuser @@ -1811,7 +1972,7 @@ typedef struct - + PQpassPQpass @@ -1821,19 +1982,19 @@ typedef struct - PQpass retournera soit le mot de passe spécifié dans + retournera soit le mot de passe spécifié dans les paramètres de connexion, soit, s'il n'y en avait pas, le mot de passe obtenu depuis le fichier de mots de passe. Dans ce dernier cas, si plusieurs hôtes étaient spécifiés dans les paramètres de connexion, il n'est pas possible de se fier au - résultat de PQpass jusqu'à l'établissement de la + résultat de jusqu'à l'établissement de la connexion. Le statut de la connexion peut être vérifié avec la - fonction PQstatus. + fonction . - + PQhostPQhost @@ -1849,15 +2010,15 @@ typedef struct Si les paramètres de connexion host and hostaddr sont tous les deux précisés, - alors PQhost retournera + alors retournera host. Si seul hostaddr a été spécifié, c'est cela qui est retourné. Si plusieurs hôtes sont spécifiés - dans les paramètres de connexion, PQhost retourne + dans les paramètres de connexion, retourne l'hôte à qui l'on s'est effectivement connecté. - PQhost retourne NULL si l'argument + retourne NULL si l'argument conn est NULL. Sinon, s'il y a une erreur en déterminant l'host (peut-être que la connexion n'a pas été complètement établie ou qu'il y @@ -1867,20 +2028,15 @@ typedef struct Si plusieurs hôtes ont été spécifiés dans les paramètres de connexion, il n'est pas possible de se baser sur le résultat de - PQhost avant l'établissement de la connexion. + avant l'établissement de la connexion. Le statut de la connexion peut être vérifié avec la fonction - PQstatus. + . - - - PQhostaddr - - PQhostaddr - - + + PQhostaddrPQhostaddr @@ -1893,7 +2049,7 @@ typedef struct - PQhostaddr renvoie NULL si + renvoie NULL si l'argument conn est NULL. Sinon, si une erreur survient en produisant l'information sur l'hôte (peut-être parce que la connexion n'a pas été complètement @@ -1902,7 +2058,7 @@ typedef struct - + PQportPQport @@ -1912,9 +2068,9 @@ typedef struct - Si de multiples ports étaient spécifiés dans les paramètres de connexion, - PQport renvoie le port auquel on est effectivement - connecté. + Si de multiples ports étaient spécifiés dans les paramètres de + connexion, renvoie le port auquel on est + effectivement connecté. @@ -1928,14 +2084,14 @@ typedef struct Si plusieurs ports ont été spécifiés dans les paramètres de connexion, il n'est pas possible de se baser sur le résultat de - PQport avant l'établissement de la connexion. + avant l'établissement de la connexion. Le statut de la connexion peut être vérifié avec la fonction - PQstatus. + . - + PQttyPQtty @@ -1949,7 +2105,7 @@ typedef struct - + PQoptionsPQoptions @@ -1968,7 +2124,7 @@ typedef struct suite à des opérations sur l'objet PGconn. - + PQstatusPQstatus @@ -1985,21 +2141,21 @@ typedef struct données a l'état CONNECTION_OK. Une tentative de connexion ayant échoué est signalée par le statut CONNECTION_BAD. D'habitude, un état OK le restera - jusqu'à PQfinish mais un échec dans les communications + jusqu'à mais un échec dans les communications peut résulter en un statut changeant prématurément en CONNECTION_BAD. Dans ce cas, l'application peut - essayer de rattraper la situation en appelant PQreset. + essayer de rattraper la situation en appelant . - Voir l'entrée de PQconnectStartParams, PQconnectStart et de + Voir l'entrée de , PQconnectStart et de PQconnectPoll à propos des autres codes de statut qui pourraient être renvoyés. - + PQtransactionStatusPQtransactionStatus @@ -2018,7 +2174,7 @@ typedef struct - + PQparameterStatusPQparameterStatus @@ -2027,7 +2183,7 @@ typedef struct Certaines valeurs de paramètres sont rapportées par le serveur automatiquement ou - lorsque leur valeurs changent. PQparameterStatus peut être utilisé + lorsque leur valeurs changent. peut être utilisé pour interroger ces paramètres. Il renvoie la valeur en cours d'un paramètre s'il est connu et NULL si le paramètre est inconnu. @@ -2066,14 +2222,14 @@ typedef struct configuration des paramètres mais libpq inclut la logique pour obtenir des valeurs pour server_version et client_encoding. Les applications sont encouragées à utiliser - PQparameterStatus plutôt qu'un code + plutôt qu'un code ad-hoc pour trouver ces valeurs. (Notez cependant que pour les connexions pré-3.0, changer client_encoding via SET après le lancement de la connexion ne sera pas reflété par - PQparameterStatus). Pour + ). Pour server_version, voir aussi - PQserverVersion, qui renvoie + , qui renvoie l'information dans un format numérique plus facile à comparer. @@ -2095,7 +2251,7 @@ typedef struct - + PQprotocolVersionPQprotocolVersion @@ -2116,7 +2272,7 @@ typedef struct - + PQserverVersionPQserverVersion @@ -2145,7 +2301,7 @@ typedef struct De ce fait, pour déterminer la compatibilité de certaines fonctionnalités, les applications devrait diviser le résultat de - PQserverVersion par 100, et non pas par 10000, + par 100, et non pas par 10000, pour déterminer le numéro de version majeure logique. Dans toutes les versions, seuls les deux derniers chiffres diffèrent entre des versions mineures (versions correctives). @@ -2153,7 +2309,7 @@ typedef struct - + PQerrorMessagePQerrorMessage @@ -2166,20 +2322,20 @@ typedef struct Pratiquement toutes les fonctions libpq initialiseront - un message pour PQerrorMessage en cas d'échec. + un message pour en cas d'échec. Notez que, par convention dans libpq, un résultat - non vide de PQerrorMessage peut courir sur plusieurs lignes + non vide de peut courir sur plusieurs lignes et finira par un retour chariot. L'appelant ne devrait pas libérer directement le résultat. Il sera libéré quand le pointeur PGconn associé - sera passé à PQfinish. La chaîne résultante n'est pas + sera passé à . La chaîne résultante n'est pas supposée rester la même pendant les opérations sur la structure PGconn. - + PQsocketPQsocket @@ -2194,7 +2350,7 @@ typedef struct - + PQbackendPIDPQbackendPID @@ -2217,7 +2373,7 @@ typedef struct - + PQconnectionNeedsPasswordPQconnectionNeedsPassword @@ -2238,7 +2394,7 @@ typedef struct - + PQconnectionUsedPasswordPQconnectionUsedPassword @@ -2265,7 +2421,7 @@ typedef struct SSL. Cette information ne change généralement pas après qu'une connexion soit établie. - + PQsslInUsePQsslInUse @@ -2279,7 +2435,7 @@ int PQsslInUse(const PGconn *conn); - + PQsslAttributePQsslAttribute @@ -2354,7 +2510,7 @@ const char *PQsslAttribute(const PGconn *conn, const char *attribute_name); - + PQsslAttributeNamesPQsslAttributeNames @@ -2367,7 +2523,7 @@ const char * const * PQsslAttributeNames(const PGconn *conn); - + PQsslStructPQsslStruct @@ -2410,7 +2566,7 @@ void *PQsslStruct(const PGconn *conn, const char *struct_name); - + PQgetsslPQgetssl @@ -2429,9 +2585,9 @@ void *PQgetssl(const PGconn *conn); nouvelles applications, car la structure renvoyée est spécifique à OpenSSL et ne sera pas disponible si une autre implémentation SSL est utilisée. Pour vérifier si une connexion utilise SSL, - appelez plutôt PQsslInUse, + appelez plutôt , et, pour plus de détails à propos de la connexion, utilisez - PQsslAttribute. + . @@ -2455,7 +2611,7 @@ void *PQgetssl(const PGconn *conn); - + PQexecPQexec @@ -2470,10 +2626,10 @@ void *PQgetssl(const PGconn *conn); Un pointeur non NULL sera généralement renvoyé sauf dans des conditions particulières comme un manque de mémoire ou lors d'erreurs sérieuses telles que l'incapacité à envoyer la commande au serveur. - La fonction PQresultStatus devrait être appelée pour + La fonction devrait être appelée pour vérifier le code retour pour toute erreur (incluant la valeur d'un pointeur NULL, auquel cas il renverra PGRES_FATAL_ERROR). - Utilisez PQerrorMessage pour obtenir plus + Utilisez pour obtenir plus d'informations sur l'erreur. @@ -2482,7 +2638,7 @@ void *PQgetssl(const PGconn *conn); La chaîne de la commande peut inclure plusieurs commandes SQL (séparées par des points virgules). Les requêtes multiples envoyées - dans un unique appel à PQexec sont exécutées dans une seule + dans un unique appel à sont exécutées dans une seule transaction, sauf si des commandes BEGIN/COMMIT explicites sont incluses dans la chaîne de requête pour la diviser en de multiples transactions. (Voir - + PQexecParamsPQexecParams @@ -2515,11 +2671,12 @@ void *PQgetssl(const PGconn *conn); - PQexecParams est identique à PQexec mais offre des + est identique à + mais offre des fonctionnalités supplémentaires : des valeurs de paramètres peuvent être spécifiées séparément de la chaîne de commande et les résultats de la requête peuvent être demandés soit au format texte soit au format binaire. - PQexecParams est supporté seulement dans les connexions avec le + est supporté seulement dans les connexions avec le protocole 3.0 et ses versions ultérieures ; elle échouera lors de l'utilisation du protocole 2.0. @@ -2642,14 +2799,14 @@ void *PQgetssl(const PGconn *conn); - Le principal avantage de PQexecParams sur - PQexec est que les valeurs de paramètres peuvent être + Le principal avantage de sur + est que les valeurs de paramètres peuvent être séparées à partir de la chaîne de commande, évitant ainsi le besoin de guillemets et d'échappements, toujours pénibles et sources d'erreurs. - Contrairement à PQexec, PQexecParams autorise au plus + Contrairement à , autorise au plus une commande SQL dans une chaîne donnée (il peut y avoir des points-virgules mais pas plus d'une commande non vide). C'est une limitation du protocole sous-jacent mais cela a quelque utilité comme défense supplémentaire contre les @@ -2679,7 +2836,7 @@ void *PQgetssl(const PGconn *conn); - + PQprepare PQprepare @@ -2694,12 +2851,12 @@ void *PQgetssl(const PGconn *conn); - PQprepare crée une instruction préparée pour une - exécution ultérieure avec PQexecPrepared. Cette + crée une instruction préparée pour une + exécution ultérieure avec . Cette fonction autorise les commandes à être exécutées de façon répétée sans être analysées et planifiées à chaque fois ; voir pour les détails. - PQprepare est supporté uniquement par les + est supporté uniquement par les connexions utilisant le protocole 3.0 et ses versions ultérieures ; elle échouera avec le protocole 2.0. @@ -2725,23 +2882,23 @@ void *PQgetssl(const PGconn *conn); littérale non typée. De plus, la requête peut utiliser des symboles de paramètre avec des nombres plus importants que nParams ; les types de données seront aussi inférés - pour ces symboles. (Voir PQdescribePrepared pour un + pour ces symboles. (Voir pour un moyen de trouver les types de données inférés.) - Comme avec PQexec, le résultat est normalement un objet + Comme avec , le résultat est normalement un objet PGresult dont le contenu indique le succès ou l'échec côté serveur. Un résultat NULL indique un manque de mémoire ou une incapacité à envoyer la commande. Utilisez - PQerrorMessage pour obtenir plus d'informations sur + pour obtenir plus d'informations sur de telles erreurs. - Les instructions préparées avec PQexecPrepared peuvent aussi être + Les instructions préparées avec peuvent aussi être créées en exécutant les instructions SQL . De plus, bien qu'il n'y ait aucune fonction libpq pour supprimer une instruction préparée, l'instruction SQL peut @@ -2750,7 +2907,7 @@ void *PQgetssl(const PGconn *conn); - + PQexecPreparedPQexecPrepared @@ -2767,19 +2924,20 @@ void *PQgetssl(const PGconn *conn); - PQexecPrepared est identique à PQexecParams mais la + est identique à mais la commande à exécuter est spécifiée en nommant l'instruction préparée précédemment au lieu de donner une chaîne de requête. Cette fonctionnalité permet aux commandes utilisées de façon répétée d'être analysées et planifiées seulement une fois plutôt que chaque fois qu'ils sont exécutés. L'instruction doit avoir été préparée précédemment dans la session en cours. - PQexecPrepared est supporté seulement pour des connexions + est supporté seulement pour des connexions en protocole 3.0 et versions ultérieures ; il échouera lors de l'utilisation du protocole 2.0. - Les paramètres sont identiques à PQexecParams, sauf que le nom + Les paramètres sont identiques à , sauf que le nom d'une instruction préparée est donné au lieu d'une chaîne de requête et que le paramètre paramTypes[] n'est pas présent (il n'est pas nécessaire car les types des paramètres de l'instruction préparée ont été @@ -2788,7 +2946,7 @@ void *PQgetssl(const PGconn *conn); - + PQdescribePreparedPQdescribePrepared @@ -2800,9 +2958,9 @@ void *PQgetssl(const PGconn *conn); - PQdescribePrepared permet à une application d'obtenir des + permet à une application d'obtenir des informations sur une instruction préparée précédente. - PQdescribePrepared est seulement supporté avec des + est seulement supporté avec des connexions utilisant le protocole 3.0 et ultérieures ; il échouera lors de l'utilisation du protocole 2.0. @@ -2812,17 +2970,17 @@ void *PQgetssl(const PGconn *conn); référencer l'instruction non nommée. Sinon, ce doit être le nom d'une instruction préparée existante. En cas de succès, un PGresult est renvoyé avec le code retour PGRES_COMMAND_OK. Les fonctions - PQnparams et PQparamtype peuvent + et peuvent utiliser ce PGresult pour obtenir des informations sur les paramètres de l'instruction préparée, et les fonctions - PQnfields, PQfname, - PQftype, etc. fournissent des informations sur les colonnes + , , + , etc. fournissent des informations sur les colonnes résultantes (s'il y en a) de l'instruction. - + PQdescribePortalPQdescribePortal @@ -2834,12 +2992,12 @@ void *PQgetssl(const PGconn *conn); - PQdescribePortal permet à une application d'obtenir des + permet à une application d'obtenir des informations sur un portail précédemment créé. (libpq ne fournit pas d'accès direct aux portails mais vous pouvez utiliser cette fonction pour inspecter les propriétés d'un curseur créé avec la commande SQL DECLARE CURSOR.) - PQdescribePortal est seulement supporté dans les connexions + est seulement supporté dans les connexions en protocole 3.0 et ultérieurs ; il échouera lors de l'utilisation du protocole 2.0. @@ -2849,8 +3007,8 @@ void *PQgetssl(const PGconn *conn); référencer un portail sans nom. Sinon, il doit correspondre au nom d'un portail existant. En cas de succès, un PGresult est renvoyé avec le code de retour PGRES_COMMAND_OK. Les fonctions - PQnfields, PQfname, - PQftype, etc. peuvent utiliser ce + , , + , etc. peuvent utiliser ce PGresult pour obtenir des informations sur les colonnes résultantes (s'il y en a) du portail. @@ -2870,7 +3028,7 @@ void *PQgetssl(const PGconn *conn); car ils sont sujets à changements dans le futur. - + PQresultStatusPQresultStatus @@ -2880,7 +3038,7 @@ void *PQgetssl(const PGconn *conn); - PQresultStatus peut renvoyer une des valeurs + peut renvoyer une des valeurs suivantes : @@ -2989,11 +3147,11 @@ void *PQgetssl(const PGconn *conn); - + PQresStatusPQresStatus - Convertit le type énuméré renvoyé par PQresultStatus en + Convertit le type énuméré renvoyé par en une constante de type chaîne décrivant le code d'état. L'appelant ne devrait pas libérer le résultat. char *PQresStatus(ExecStatusType status); @@ -3002,7 +3160,7 @@ void *PQgetssl(const PGconn *conn); - + PQresultErrorMessagePQresultErrorMessage @@ -3013,31 +3171,27 @@ void *PQgetssl(const PGconn *conn); S'il y a eu une erreur, la chaîne renvoyée incluera un retour chariot en fin. L'appelant ne devrait pas libérer directement le résultat. Il sera libéré quand le pointeur PGresult associé sera passé à - PQclear. + . - Immédiatement après un appel à PQexec ou - PQgetResult, PQerrorMessage (sur la - connexion) renverra la même chaîne que PQresultErrorMessage + Immédiatement après un appel à ou + , + (sur la + connexion) renverra la même chaîne que (sur le résultat). Néanmoins, un PGresult conservera son message d'erreur jusqu'à destruction, alors que le message d'erreur de la connexion changera avec les opérations suivantes. Utilisez - PQresultErrorMessage quand vous voulez connaître le statut + quand vous voulez connaître le statut associé avec un PGresult particulier ; utilisez - PQerrorMessage lorsque vous souhaitez connaître le statut + lorsque vous souhaitez connaître le statut à partir de la dernière opération sur la connexion. - - - PQresultVerboseErrorMessage - - PQresultVerboseErrorMessage - - + + PQresultVerboseErrorMessagePQresultVerboseErrorMessage @@ -3050,9 +3204,9 @@ char *PQresultVerboseErrorMessage(const PGresult *res, Dans certaines situations, un client pourrait vouloir une version plus détaillée d'une erreur déjà rapportée. - PQresultVerboseErrorMessage couvre ce besoin en + couvre ce besoin en traitant le message tel qu'il aurait été produit par - PQresultErrorMessage si la configuration souhaitée + si la configuration souhaitée de la verbosité était activée pour la connexion au moment où l'objet PGresult indiqué a été généré. Si le PGresult ne correspond pas une erreur, @@ -3074,7 +3228,7 @@ char *PQresultVerboseErrorMessage(const PGresult *res, - + PQresultErrorFieldPQresultErrorField @@ -3088,7 +3242,7 @@ char *PQresultVerboseErrorMessage(const PGresult *res, n'incluront normalement pas un retour chariot en fin. L'appelant ne devrait pas libérer directement le résultat. Il sera libéré quand le pointeur PGresult associé sera passé à - PQclear. + . @@ -3108,7 +3262,7 @@ char *PQresultVerboseErrorMessage(const PGresult *res, - + PG_DIAG_SEVERITY_NONLOCALIZED @@ -3127,13 +3281,8 @@ char *PQresultVerboseErrorMessage(const PGresult *res, - PG_DIAG_SQLSTATE - + PG_DIAG_SQLSTATEerror codeslibpq - - error codes - libpq - Le code SQLSTATE de l'erreur. Ce code identifie le type d'erreur qui est survenu ; il peut être utilisé par des interfaces utilisateur pour @@ -3347,13 +3496,13 @@ char *PQresultVerboseErrorMessage(const PGresult *res, - + PQclearPQclear Libère le stockage associé avec un PGresult. Chaque résultat de commande devrait être libéré via - PQclear lorsqu'il n'est plus nécessaire. + lorsqu'il n'est plus nécessaire. void PQclear(PGresult *res); @@ -3363,7 +3512,7 @@ char *PQresultVerboseErrorMessage(const PGresult *res, aussi longtemps que vous en avez besoin ; il ne part pas lorsque vous lancez une nouvelle commande, même pas si vous fermez la connexion. Pour vous en débarrasser, vous devez appeler - PQclear. En cas d'oubli, le résultat sera une + . En cas d'oubli, le résultat sera une fuite de mémoire dans votre application. @@ -3389,7 +3538,7 @@ char *PQresultVerboseErrorMessage(const PGresult *res, - + PQntuplesPQntuples @@ -3404,7 +3553,7 @@ char *PQresultVerboseErrorMessage(const PGresult *res, - + PQnfieldsPQnfields @@ -3416,14 +3565,15 @@ char *PQresultVerboseErrorMessage(const PGresult *res, - + PQfnamePQfname Renvoie le nom de la colonne associé avec le numéro de colonne donnée. Les numéros de colonnes commencent à zéro. L'appelant ne devrait pas libérer directement le résultat. Il sera libéré quand le pointeur - PGresult associée est passée à PQclear. + PGresult associée est passée à + . char *PQfname(const PGresult *res, int column_number); @@ -3436,7 +3586,7 @@ char *PQresultVerboseErrorMessage(const PGresult *res, - + PQfnumberPQfnumber @@ -3469,7 +3619,7 @@ char *PQresultVerboseErrorMessage(const PGresult *res, - + PQftablePQftable @@ -3497,7 +3647,7 @@ char *PQresultVerboseErrorMessage(const PGresult *res, - + PQftablecolPQftablecol @@ -3518,7 +3668,7 @@ char *PQresultVerboseErrorMessage(const PGresult *res, - + PQfformatPQfformat @@ -3537,7 +3687,7 @@ char *PQresultVerboseErrorMessage(const PGresult *res, - + PQftypePQftype @@ -3559,7 +3709,7 @@ char *PQresultVerboseErrorMessage(const PGresult *res, - + PQfmodPQfmod @@ -3581,7 +3731,7 @@ char *PQresultVerboseErrorMessage(const PGresult *res, - + PQfsizePQfsize @@ -3593,7 +3743,7 @@ char *PQresultVerboseErrorMessage(const PGresult *res, - PQfsize renvoie l'espace alloué pour cette colonne dans une ligne + renvoie l'espace alloué pour cette colonne dans une ligne de la base de données, en d'autres termes la taille de la représentation interne du serveur du type de données (en conséquence ce n'est pas réellement utile pour les clients). Une valeur négative indique que les types de @@ -3602,7 +3752,7 @@ char *PQresultVerboseErrorMessage(const PGresult *res, - + PQbinaryTuplesPQbinaryTuples @@ -3616,14 +3766,14 @@ char *PQresultVerboseErrorMessage(const PGresult *res, Cette fonction est obsolète (sauf dans le cas d'une utilisation en relation avec COPY) car un seul PGresult peut contenir du texte dans certaines colonnes et des données binaires dans d'autres. - PQfformat est à préférer. PQbinaryTuples + est à préférer. renvoie 1 seulement si toutes les colonnes du résultat sont dans un format binaire (format 1). - + PQgetvaluePQgetvalue @@ -3632,7 +3782,7 @@ char *PQresultVerboseErrorMessage(const PGresult *res, colonnes commencent à zéro. L'appelant ne devrait pas libérer directement le résultat. Il sera libéré quand le pointeur PGresult associé sera passé à - PQclear. + . char* PQgetvalue(const PGresult *res, int row_number, int column_number); @@ -3641,7 +3791,7 @@ char *PQresultVerboseErrorMessage(const PGresult *res, Pour les données au format texte, la valeur renvoyée par - PQgetvalue est une représentation au format chaîne de + est une représentation au format chaîne de caractères terminée par un octet nul de la valeur du champ. Pour les données au format binaire, la valeur dans la représentation binaire est déterminée par le type de la donnée, fonctions typsend et @@ -3652,12 +3802,12 @@ char *PQresultVerboseErrorMessage(const PGresult *res, Une chaîne vide est renvoyée si la valeur du champ est NULL. Voir - PQgetisnull pour distinguer les valeurs NULL des + pour distinguer les valeurs NULL des chaînes vides. - Le pointeur renvoyé par PQgetvalue pointe vers le stockage + Le pointeur renvoyé par pointe vers le stockage qui fait partie de la structure PGresult. Personne ne devrait modifier les données vers lesquelles il pointe, et tout le monde devrait copier les données dans un autre stockage explicitement si elles @@ -3667,7 +3817,7 @@ char *PQresultVerboseErrorMessage(const PGresult *res, - + PQgetisnullPQgetisnull valeur NULLdans @@ -3683,13 +3833,13 @@ char *PQresultVerboseErrorMessage(const PGresult *res, Cette fonction renvoie 1 si le champ est nul et 0 s'il contient une valeur non - NULL (notez que PQgetvalue renverra une chaîne vide, et + NULL (notez que renverra une chaîne vide, et non pas un pointeur NULL, pour un champ NULL). - + PQgetlengthPQgetlength @@ -3703,16 +3853,16 @@ char *PQresultVerboseErrorMessage(const PGresult *res, C'est la longueur réelle des données pour cette donnée en particulier, - c'est-à-dire la taille de l'objet pointé par PQgetvalue. + c'est-à-dire la taille de l'objet pointé par . Pour le format textuel, c'est identique à strlen(). Pour le format binaire, c'est une information essentielle. Notez que l'on ne devrait - pas se fier à PQfsize pour + pas se fier à pour obtenir la taille réelle des données. - + PQnparamsPQnparams @@ -3724,13 +3874,13 @@ char *PQresultVerboseErrorMessage(const PGresult *res, Cette fonction est utile seulement pour inspecter le résultat de - PQdescribePrepared. Pour les autres types de requêtes, + . Pour les autres types de requêtes, elle renverra zéro. - + PQparamtypePQparamtype @@ -3743,13 +3893,13 @@ char *PQresultVerboseErrorMessage(const PGresult *res, Cette fonction est utile seulement pour inspecter le résultat de - PQdescribePrepared. Pour les autres types de requêtes, + . Pour les autres types de requêtes, elle renverra zéro. - + PQprintPQprint @@ -3797,7 +3947,7 @@ char *PQresultVerboseErrorMessage(const PGresult *res, - + PQcmdStatusPQcmdStatus @@ -3811,12 +3961,12 @@ char *PQresultVerboseErrorMessage(const PGresult *res, données supplémentaires comme le nombre de lignes traitées. L'appelant ne devrait pas libérer directement le résultat. Il sera libéré quand le pointeur PGresult associée sera passé à - PQclear. + . - + PQcmdTuplesPQcmdTuples @@ -3835,15 +3985,15 @@ char *PQresultVerboseErrorMessage(const PGresult *res, ou un EXECUTE d'une instruction préparée contenant une instruction INSERT, UPDATE ou DELETE. Si la commande qui a généré PGresult était - autre chose, PQcmdTuples renverrait directement une chaîne vide. + autre chose, renverrait directement une chaîne vide. L'appelant ne devrait pas libérer la valeur de retour directement. Elle sera libérée quand le pointeur PGresult associée sera passé à - PQclear. + . - + PQoidValuePQoidValue @@ -3862,14 +4012,14 @@ char *PQresultVerboseErrorMessage(const PGresult *res, - + PQoidStatusPQoidStatus Cette fonction est obsolète. Utilisez plutôt - PQoidValue. De plus, elle n'est pas compatible + . De plus, elle n'est pas compatible avec les threads. Elle renvoie une chaîne contenant l'OID de la - ligne insérée alors que PQoidValue renvoie + ligne insérée alors que renvoie la valeur de l'OID. char * PQoidStatus(const PGresult *res); @@ -3889,7 +4039,7 @@ char *PQresultVerboseErrorMessage(const PGresult *res, - + PQescapeLiteral @@ -3905,24 +4055,24 @@ char *PQresultVerboseErrorMessage(const PGresult *res, - PQescapeLiteral échappe une chaîne pour l'utiliser + échappe une chaîne pour l'utiliser dans une commande SQL. C'est utile pour insérer des données comme des constantes dans des commandes SQL. Certains caractères, comme les guillemets et les antislashs, doivent être traités avec des caractères d'échappement pour éviter qu'ils ne soient traités d'après leur signification spéciale par l'analyseur SQL. - PQescapeLiteral réalise cette opération. + réalise cette opération. - PQescapeLiteral renvoie une version échappée du + renvoie une version échappée du paramètre str dans une mémoire allouée avec malloc(). Cette mémoire devra être libérée en utilisant PQfreemem() quand le résultat ne sera plus utile. Un octet zéro final n'est pas requis et ne doit pas être compté dans length. (Si un octet zéro est découvert avant le traitement de length - octets, PQescapeLiteral s'arrête au zéro ; ce + octets, s'arrête au zéro ; ce comportement est celui de strncpy.) Les caractères spéciaux de la chaîne en retour ont été remplacés pour qu'ils puissent être traités correctement par l'analyseur de chaînes de @@ -3933,7 +4083,7 @@ char *PQresultVerboseErrorMessage(const PGresult *res, - En cas d'erreur, PQescapeLiteral renvoit + En cas d'erreur, renvoit NULL et un message adéquat est stocké dans l'objet conn. @@ -3953,12 +4103,12 @@ char *PQresultVerboseErrorMessage(const PGresult *res, Notez qu'il n'est pas nécessaire ni correct de faire un échappement quand une valeur est passée en tant que paramètre séparé dans - PQexecParams ou ses routines sœurs. + ou ses routines sœurs. - + PQescapeIdentifier @@ -3974,7 +4124,7 @@ char *PQresultVerboseErrorMessage(const PGresult *res, - PQescapeIdentifier échappe une chaîne pour qu'elle + échappe une chaîne pour qu'elle puisse être utilisé en tant qu'identifiant SQL, par exemple pour le nom d'une table, d'une colonne ou d'une fonction. C'est utile quand un identifiant fourni par un utilisateur pourrait contenir des caractères @@ -3985,7 +4135,7 @@ char *PQresultVerboseErrorMessage(const PGresult *res, - PQescapeIdentifier renvoit une version du paramètre + renvoit une version du paramètre str échappée comme doit l'être un identifiant SQL, dans une mémoire allouée avec malloc(). Cette mémoire doit être libérée en utilisant PQfreemem() @@ -3993,7 +4143,7 @@ char *PQresultVerboseErrorMessage(const PGresult *res, nécessaire et ne doit pas être comptabilisé dans length. (Si un octet zéro est trouvé avant le traitement de length octets, - PQescapeIdentifier s'arrête au zéro ; ce + s'arrête au zéro ; ce comportement est celui de strncpy.) Les caractères spéciaux de la chaîne en retour ont été remplacés pour que ce dernier soit traité proprement comme un identifiant SQL. Un octet @@ -4002,7 +4152,7 @@ char *PQresultVerboseErrorMessage(const PGresult *res, - En cas d'erreur, PQescapeIdentifier renvoit + En cas d'erreur, renvoit NULL et un message d'erreur adéquat est stocké dans l'objet conn. @@ -4018,7 +4168,7 @@ char *PQresultVerboseErrorMessage(const PGresult *res, - + PQescapeStringConn @@ -4036,10 +4186,10 @@ char *PQresultVerboseErrorMessage(const PGresult *res, - PQescapeStringConn échappe les chaînes littérales de - la même façon que PQescapeLiteral. Contrairement à - PQescapeLiteral, l'appelant doit fournir un tampon - d'une taille appropriée. De plus, PQescapeStringConn + > échappe les chaînes littérales de + la même façon que . Contrairement à + , l'appelant doit fournir un tampon + d'une taille appropriée. De plus, > n'ajoute pas de guillemets simples autour des chaînes littérales de PostgreSQL ; elles doivent être ajoutées dans la commande SQL où ce résultat sera inséré. Le paramètre @@ -4049,7 +4199,7 @@ char *PQresultVerboseErrorMessage(const PGresult *res, pas nécessaire et ne doit pas être comptabilisé dans length. (Si un octet zéro est trouvé avant le traitement de length octets, - PQescapeStringConn s'arrête au zéro ; ce + s'arrête au zéro ; ce comportement est celui de strncpy.) to doit pointer vers un tampon qui peut contenir au moins un octet de plus que deux fois la valeur de @@ -4071,32 +4221,27 @@ char *PQresultVerboseErrorMessage(const PGresult *res, - PQescapeStringConn renvoit le nombre d'octets écrits + renvoit le nombre d'octets écrits dans to, sans inclure l'octet zéro final. - - - PQescapeString - - PQescapeString - - + + PQescapeStringPQescapeString - PQescapeString est une version ancienne et obsolète de - PQescapeStringConn. + est une version ancienne et obsolète de + . size_t PQescapeString (char *to, const char *from, size_t length); - La seule différence avec PQescapeStringConn tient - dans le fait que PQescapeString n'a pas de + La seule différence avec tient + dans le fait que n'a pas de paramètres conn et error. À cause de cela, elle ne peut ajuster son comportement en fonction des propriétés de la connexion (comme l'encodage des @@ -4106,23 +4251,23 @@ char *PQresultVerboseErrorMessage(const PGresult *res, - PQescapeString peut être utilisé en toute sécurité avec + peut être utilisé en toute sécurité avec des programmes client utilisant une seule connexion PostgreSQL à la fois (dans ce cas, il peut trouver ce qui l'intéresse en arrière-plan). Dans d'autres contextes, c'est un risque en terme de sécurité. Cette fonction devrait être évitée et remplacée par - PQescapeStringConn. + . - + PQescapeByteaConnPQescapeBytea Échappe des données binaires à utiliser à l'intérieur d'une commande SQL avec - le type bytea. Comme avec PQescapeStringConn, + le type bytea. Comme avec , c'est seulement utilisé pour insérer des données directement dans une chaîne de commande SQL. unsigned char *PQescapeByteaConn(PGconn *conn, @@ -4150,7 +4295,7 @@ char *PQresultVerboseErrorMessage(const PGresult *res, - PQescapeByteaConn renvoie une version échappée du paramètre + renvoie une version échappée du paramètre from dans la mémoire allouée avec malloc(). Cette mémoire doit être libérée avec PQfreemem lorsque le résultat n'est plus nécessaire. Tous les @@ -4170,12 +4315,12 @@ char *PQresultVerboseErrorMessage(const PGresult *res, - + PQescapeByteaPQescapeBytea - PQescapeBytea est une version ancienne et obsolète de - PQescapeByteaConn. + est une version ancienne et obsolète de + . unsigned char *PQescapeBytea(const unsigned char *from, size_t from_length, @@ -4184,25 +4329,25 @@ char *PQresultVerboseErrorMessage(const PGresult *res, - La seule différence avec PQescapeByteaConn est que - PQescapeBytea ne prend pas de paramètre - PGconn. De ce fait, PQescapeBytea + La seule différence avec est que + ne prend pas de paramètre + PGconn. De ce fait, ne peut être utilisé en toute sécurité que dans des programmes qui n'utilisent qu'une seule connexion PostgreSQL à la fois (dans ce cas, il peut trouver ce dont il a besoin en arrière-plan). Elle pourrait donner des résultats erronés si elle est utilisé dans des programmes qui utilisent plusieurs connexions de bases de - données (dans ce cas, utilisez PQescapeByteaConn). + données (dans ce cas, utilisez ). - + PQunescapeByteaPQunescapeBytea Convertit une représentation de la chaîne en donnés binaires — - l'inverse de PQescapeBytea. Ceci est nécessaire lors de + l'inverse de . Ceci est nécessaire lors de la récupération de données bytea en format texte, mais pas lors de sa récupération au format binaire. @@ -4212,20 +4357,20 @@ char *PQresultVerboseErrorMessage(const PGresult *res, Le paramètre from pointe vers une chaîne de - telle qu'elle pourrait provenir de PQgetvalue + telle qu'elle pourrait provenir de lorsque la colonne est de type bytea. - PQunescapeBytea convertit cette représentation de la + convertit cette représentation de la chaîne en sa représentation binaire. Elle renvoie un pointeur vers le tampon alloué avec malloc(), ou NULL en cas d'erreur, et place la taille du tampon dans to_length. Le résultat doit - être libéré en utilisant PQfreemem lorsqu'il n'est plus + être libéré en utilisant lorsqu'il n'est plus nécessaire. - Cette conversion n'est pas l'inverse exacte de PQescapeBytea + Cette conversion n'est pas l'inverse exacte de car la chaîne n'est pas supposée être "échappée" tel qu'elle est renvoyée - par PQgetvalue. Cela veut dire, notamment, + par . Cela veut dire, notamment, qu'il n'y a pas besoin de réfléchir à la mise entre guillemets de la chaîne, et donc pas besoin d'un paramètre PGconn. @@ -4242,14 +4387,14 @@ char *PQresultVerboseErrorMessage(const PGresult *res, connexion non bloquante - La fonction PQexec est adéquate pour soumettre des + La fonction est adéquate pour soumettre des commandes aux applications standards, synchrones. Néanmoins, elle a quelques défauts pouvant être d'importance à certains utilisateurs : - PQexec attend que la commande se termine. L'application + attend que la commande se termine. L'application pourrait avoir du travail ailleurs (comme le rafraîchissement de l'interface utilisateur), auquel cas elle ne voudra pas être bloquée en attente de la réponse. @@ -4265,17 +4410,17 @@ char *PQresultVerboseErrorMessage(const PGresult *res, - PQexec ne peut renvoyer qu'une structure + ne peut renvoyer qu'une structure PGresult. Si la chaîne de commande soumise contient plusieurs commandes SQL, toutes les structures PGresult sont annulées par - PQexec, sauf la dernière. + , sauf la dernière. - PQexec récupère toujours le résultat entier de la + récupère toujours le résultat entier de la commande, le mettant en cache dans une seule structure PGresult. Bien que cela simplifie la logique de la gestion des erreurs pour l'application, cela peut ne pas se @@ -4287,39 +4432,42 @@ char *PQresultVerboseErrorMessage(const PGresult *res, Les applications qui n'apprécient pas ces limitations peuvent utiliser à la - place les fonctions sous-jacentes à partir desquelles - PQexec est construit : - PQsendQuery et PQgetResult. Il existe - aussi PQsendQueryParams, PQsendPrepare, - PQsendQueryPrepared, PQsendDescribePrepared - et PQsendDescribePortal, pouvant être utilisées avec - PQgetResult pour dupliquer les fonctionnalités de - respectivement PQexecParams, PQprepare, - PQexecPrepared, PQdescribePrepared et - PQdescribePortal. + place les fonctions sous-jacentes à partir desquelles est construit : et . Il + existe aussi , , , et , pouvant être utilisées avec pour dupliquer les fonctionnalités de + respectivement , , , et . - + PQsendQueryPQsendQuery Soumet une commande au serveur sans attendre le(s) résultat(s). 1 est renvoyé si la commande a été correctement envoyée et 0 dans le cas - contraire (auquel cas, utilisez la fonction PQerrorMessage + contraire (auquel cas, utilisez la fonction pour obtenir plus d'informations sur l'échec). int PQsendQuery(PGconn *conn, const char *command); - Après un appel réussi à PQsendQuery, appelez - PQgetResult une ou plusieurs fois pour obtenir - les résultats. PQsendQuery ne peut pas être appelé + Après un appel réussi à , appelez + une ou plusieurs fois pour obtenir + les résultats. ne peut pas être appelé de nouveau (sur la même connexion) tant que - PQgetResult ne renvoie pas de pointeur NULL, + ne renvoie pas de pointeur NULL, indiquant que la commande a terminé. - + PQsendQueryParamsPQsendQueryParams @@ -4335,18 +4483,18 @@ char *PQresultVerboseErrorMessage(const PGresult *res, int resultFormat); - Ceci est équivalent à PQsendQuery sauf que les + Ceci est équivalent à sauf que les paramètres de requêtes peuvent être spécifiés séparément à partir de la chaîne de requête. Les paramètres de la fonction sont gérés de façon identique à - PQexecParams. Comme - PQexecParams, cela ne fonctionnera pas + . Comme + , cela ne fonctionnera pas pour les connexions utilisant le protocole 2.0 et cela ne permet qu'une seule commande dans la chaîne de requête. - + PQsendPreparePQsendPrepare @@ -4359,18 +4507,18 @@ char *PQresultVerboseErrorMessage(const PGresult *res, const Oid *paramTypes); - Ceci est la version asynchrone de PQprepare : elle + Ceci est la version asynchrone de  : elle renvoie 1 si elle a été capable d'envoyer la requête, 0 sinon. Après un - appel terminé avec succès, appelez PQgetResult pour + appel terminé avec succès, appelez pour déterminer si le serveur a créé avec succès l'instruction préparée. Les paramètres de la fonction sont gérés de façon identique à - PQprepare. Comme PQprepare, cela ne + . Comme , cela ne fonctionnera pas sur les connexions utilisant le protocole 2.0. - + PQsendQueryPreparedPQsendQueryPrepared @@ -4385,18 +4533,18 @@ char *PQresultVerboseErrorMessage(const PGresult *res, int resultFormat); - Ceci est similaire à PQsendQueryParams mais la + Ceci est similaire à mais la commande à exécuter est spécifiée en nommant une instruction préparée précédente au lieu de donner une chaîne contenant la requête. Les paramètres de la fonction sont gérés de façon identique à - PQexecPrepared. Comme - PQexecPrepared, cela ne fonctionnera pas pour les + . Comme + , cela ne fonctionnera pas pour les connexions utilisant le protocole 2.0. - + PQsendDescribePreparedPQsendDescribePrepared @@ -4406,19 +4554,19 @@ char *PQresultVerboseErrorMessage(const PGresult *res, int PQsendDescribePrepared(PGconn *conn, const char *stmtName); - Ceci est la version asynchrone de PQdescribePrepared : + Ceci est la version asynchrone de  : elle renvoie 1 si elle a été capable d'envoyer la requête, 0 dans le cas - contraire. Après un appel réussi, appelez PQgetResult + contraire. Après un appel réussi, appelez pour obtenir les résultats. Les paramètres de la fonction sont gérés de façon identique à - PQdescribePrepared. Comme - PQdescribePrepared, cela ne fontionnera pas avec + . Comme + , cela ne fontionnera pas avec les connexions utilisant le protocole 2.0. - + PQsendDescribePortalPQsendDescribePortal @@ -4428,29 +4576,29 @@ char *PQresultVerboseErrorMessage(const PGresult *res, int PQsendDescribePortal(PGconn *conn, const char *portalName); - Ceci est la version asynchrone de PQdescribePortal : + Ceci est la version asynchrone de  : elle renvoie 1 si elle a été capable d'envoyer la requête, 0 dans le cas - contraire. Après un appel réussi, appelez PQgetResult + contraire. Après un appel réussi, appelez pour obtenir les résultats. Les paramètres de la fonction sont gérés de façon identique à - PQdescribePortal. Comme - PQdescribePortal, cela ne fontionnera pas avec + . Comme + , cela ne fontionnera pas avec les connexions utilisant le protocole 2.0. - + PQgetResultPQgetResult Attend le prochain résultat d'un appel précédent à - PQsendQuery, - PQsendQueryParams, - PQsendPrepare, - PQsendQueryPrepared, - PQsendDescribePrepared ou - PQsendDescribePortal, et le renvoie. Un pointeur + , + , + , + , + ou + , et le renvoie. Un pointeur NULL est renvoyé quand la commande est terminée et qu'il n'y aura plus de résultats. PGresult *PQgetResult(PGconn *conn); @@ -4458,24 +4606,24 @@ char *PQresultVerboseErrorMessage(const PGresult *res, - PQgetResult doit être appelé de façon répétée + doit être appelé de façon répétée jusqu'à ce qu'il retourne un pointeur NULL indiquant que la commande s'est terminée. (Si appelée à un moment où aucune commande n'est - active, PQgetResult renverra juste immédiatement un + active, renverra juste immédiatement un pointeur NULL). Chaque résultat non NULL provenant de - PQgetResult devrait être traité en utilisant les + devrait être traité en utilisant les mêmes fonctions d'accès à PGresult que celles précédemment décrites. N'oubliez pas de libérer chaque objet résultat - avec PQclear quand vous en avez terminé. - Notez que PQgetResult bloquera seulement si la + avec quand vous en avez terminé. + Notez que bloquera seulement si la commande est active et que les données nécessaires en réponse n'ont pas encore été lues par PQconsumeInput. - Même quand PQresultStatus indique une erreur - fatale, PQgetResult doit être appelé + Même quand indique une erreur + fatale, doit être appelé jusqu'à ce qu'il renvoie un pointeur NULL pour permettre à libpq de traiter l'information sur l'erreur correctement. @@ -4487,8 +4635,8 @@ char *PQresultVerboseErrorMessage(const PGresult *res, - Utiliser PQsendQuery et PQgetResult - résout un des problèmes de PQexec : si une chaîne de + Utiliser et + résout un des problèmes de  : si une chaîne de commande contient plusieurs commandes SQL, les résultats de ces commandes peuvent être obtenus individuellement (ceci permet une simple forme de traitement en parallèle : le client peut gérer les résultats @@ -4498,19 +4646,19 @@ char *PQresultVerboseErrorMessage(const PGresult *res, Une autre fonctionnalité fréquemment demandée, pouvant être obtenue avec - PQsendQuery et PQgetResult est + et est la récupération d'un gros résultat une ligne à la fois. Ceci est discuté dans . - Néanmoins, appeler PQgetResult + Néanmoins, appeler causera toujours un blocage du client jusqu'à la fin de la prochaine commande SQL. Ceci est évitable en utilisant proprement deux fonctions supplémentaires : - + PQconsumeInputPQconsumeInput @@ -4520,41 +4668,41 @@ char *PQresultVerboseErrorMessage(const PGresult *res, - PQconsumeInput renvoie normalement 1 indiquant + renvoie normalement 1 indiquant aucune erreur, mais renvoie zéro s'il y a eu une erreur (auquel - cas PQerrorMessage peut être consulté). Notez que le + cas peut être consulté). Notez que le résultat ne dit pas si des données ont été récupérées en entrée. Après avoir - appelé PQconsumeInput, l'application devrait vérifier - PQisBusy et/ou PQnotifies pour voir + appelé , l'application devrait vérifier + et/ou PQnotifies pour voir si leur état a changé. - PQconsumeInput peut être appelée même si l'application + peut être appelée même si l'application n'est pas encore préparée à traiter un résultat ou une notification. La fonction lira les données disponibles et les sauvegardera dans un tampon indiquant ainsi qu'une lecture d'un select() est possible. - L'application peut donc utiliser PQconsumeInput pour + L'application peut donc utiliser pour effacer la condition select() immédiatement, puis examiner les résultats à loisir. - + PQisBusyPQisBusy Renvoie 1 si une commande est occupée, c'est-à-dire que - PQgetResult bloque en attendant une entrée. Un zéro - indique que PQgetResult peut être appelé avec + bloque en attendant une entrée. Un zéro + indique que peut être appelé avec l'assurance de ne pas bloquer. int PQisBusy(PGconn *conn); - PQisBusy ne tentera pas lui-même de lire les données à - partir du serveur ; du coup, PQconsumeInput doit être + ne tentera pas lui-même de lire les données à + partir du serveur ; du coup, doit être appelé d'abord ou l'état occupé ne prendra jamais fin. @@ -4568,23 +4716,23 @@ char *PQresultVerboseErrorMessage(const PGresult *res, attendre que toutes les conditions soient remplies. Une des conditions sera la disponibilité des données à partir du serveur, ce qui signifie des données lisibles pour select() sur le descripteur de - fichier identifié par PQsocket. Lorsque la boucle + fichier identifié par . Lorsque la boucle principale détecte la disponibilité de données, elle devrait appeler - PQconsumeInput pour lire l'en-tête. Elle peut ensuite appeler - PQisBusy suivi par PQgetResult si - PQisBusy renvoie false (0). Elle peut aussi appeler + pour lire l'en-tête. Elle peut ensuite appeler + suivi par si + renvoie false (0). Elle peut aussi appeler PQnotifies pour détecter les messages NOTIFY (voir la ). Un client qui utilise - PQsendQuery/PQgetResult peut aussi + / peut aussi tenter d'annuler une commande en cours de traitement par le serveur ; voir la . Mais quelle que soit la valeur - renvoyée par PQcancel, l'application doit continuer avec + renvoyée par , l'application doit continuer avec la séquence normale de lecture du résultat en utilisant - PQgetResult. Une annulation réussie causera simplement une + . Une annulation réussie causera simplement une fin plus rapide de la commande. @@ -4600,7 +4748,7 @@ char *PQresultVerboseErrorMessage(const PGresult *res, être utilisées. - + PQsetnonblockingPQsetnonblocking @@ -4616,19 +4764,19 @@ char *PQresultVerboseErrorMessage(const PGresult *res, Dans l'état non bloquant, les appels à - PQsendQuery, - PQputline, PQputnbytes, - PQputCopyData et PQendcopy ne bloqueront pas mais renverront à la + , , + , + et ne bloqueront pas mais renverront à la place une erreur s'ils ont besoin d'être de nouveau appelés. - Notez que PQexec n'honore pas le mode non + Notez que n'honore pas le mode non bloquant ; s'il est appelé, il agira d'une façon bloquante malgré tout. - + PQisnonblockingPQisnonblocking @@ -4644,7 +4792,7 @@ char *PQresultVerboseErrorMessage(const PGresult *res, - + PQflushPQflush @@ -4662,17 +4810,17 @@ char *PQresultVerboseErrorMessage(const PGresult *res, Après avoir envoyé une commande ou des données dans une connexion non bloquante, - appelez PQflush. S'il renvoie 1, attendez que la socket + appelez . S'il renvoie 1, attendez que la socket devienne prête en lecture ou en écriture. Si elle est prête en écriture, - appelez de nouveau PQflush. Si elle est prête en lecture, - appelez PQconsumeInput, puis appelez - PQflush. Répétez jusqu'à ce que - PQflush renvoie 0. (Il est nécessaire de vérifier si elle + appelez de nouveau . Si elle est prête en lecture, + appelez , puis appelez + . Répétez jusqu'à ce que + renvoie 0. (Il est nécessaire de vérifier si elle est prête en lecture, et de vidanger l'entrée avec - PQconsumeInput car le serveur peut bloquer en essayant + car le serveur peut bloquer en essayant d'envoyer des données, par exemple des messages NOTICE, et ne va pas lire nos données tant que nous n'avons pas lu les siennes.) Une fois que - PQflush renvoie 0, attendez que la socket soit disponible + renvoie 0, attendez que la socket soit disponible en lecture, puis lisez la réponse comme décrit ci-dessus. @@ -4692,7 +4840,7 @@ char *PQresultVerboseErrorMessage(const PGresult *res, structure PGresult. Ce peut être impraticable pour les commandes renvoyant un grand nombre de lignes. Dans de tels cas, les applications peuvent utiliser - PQsendQuery et PQgetResult dans + et dans le mode ligne-à-ligne. Dans ce mode, les lignes du résultat sont renvoyées à l'application une par une, au fur et à mesure qu'elles sont reçues du serveur. @@ -4700,10 +4848,10 @@ char *PQresultVerboseErrorMessage(const PGresult *res, Pour entrer dans le mode ligne-à-ligne, appelez - PQsetSingleRowMode immédiatement après un appel - réussi à PQsendQuery (ou une fonction similaire). + immédiatement après un appel + réussi à (ou une fonction similaire). Cette sélection de mode ne fonctionne que pour la requête en cours - d'exécution. Puis appelez PQgetResult de façon répétée, + d'exécution. Puis appelez de façon répétée, jusqu'à ce qu'elle renvoit NULL, comme documenté dans . Si la requête renvoit des lignes, elles sont renvoyées en tant qu'objets PGresult individuels, qui ressemblent @@ -4713,17 +4861,17 @@ char *PQresultVerboseErrorMessage(const PGresult *res, si la requête ne renvoit aucune ligne, un objet à zéro ligne avec le statut PGRES_TUPLES_OK est renvoyé ; c'est le signal qu'aucune autre ligne ne va arriver. (Notez cependant qu'il est toujours - nécessaire de continuer à appeler PQgetResult jusqu'à + nécessaire de continuer à appeler jusqu'à ce qu'elle renvoit NULL.) Tous les objets PGresult contiendront les mêmes données de description de lignes (noms de colonnes, types, etc.) qu'un objet PGresult standard aurait pour cette requête. Chaque objet doit être libéré avec la fonction - PQclear comme d'ordinaire. + comme d'ordinaire. - + PQsetSingleRowMode @@ -4742,10 +4890,10 @@ char *PQresultVerboseErrorMessage(const PGresult *res, Cette fonction peut seulement être appelée immédiatement après - PQsendQuery ou une de ses fonctions sœurs, avant + ou une de ses fonctions sœurs, avant toute autre opération sur la connexion comme - PQconsumeInput ou - PQgetResult. Si elle est appelée au bon moment, + ou + . Si elle est appelée au bon moment, la fonction active le mode ligne-à-ligne pour la requête en cours et renvoit 1. Sinon, le mode reste inchangé et la fonction renvoit 0. Dans tous les cas, le mode retourne à la normale après la fin de la requête @@ -4785,7 +4933,7 @@ char *PQresultVerboseErrorMessage(const PGresult *res, décrites dans cette section. - + PQgetCancel PQgetCancel @@ -4798,7 +4946,7 @@ char *PQresultVerboseErrorMessage(const PGresult *res, - PQgetCancel crée un objet + crée un objet PGcancelPGcancel à partir d'un objet connexion PGconn. Il renverra NULL si le paramètre conn @@ -4806,30 +4954,30 @@ char *PQresultVerboseErrorMessage(const PGresult *res, invalide. L'objet PGcancel est une structure opaque qui n'a pas pour but d'être accédé directement par l'application ; elle peut seulement être passée à - PQcancel ou PQfreeCancel. + ou . - + PQfreeCancel PQfreeCancel Libère une structure de données créée par - PQgetCancel. + . void PQfreeCancel(PGcancel *cancel); - PQfreeCancel libère un objet donné par - PQgetCancel. + libère un objet donné par + . - + PQcancel PQcancel @@ -4858,11 +5006,11 @@ char *PQresultVerboseErrorMessage(const PGresult *res, - PQcancel peut être invoqué de façon sûre + peut être invoqué de façon sûre par le gestionnaire de signaux si errbuf est une variable locale dans le gestionnaire de signaux. L'objet PGcancel est en lecture seule en ce qui - concerne PQcancel, pour qu'il puisse aussi + concerne , pour qu'il puisse aussi être appelé à partir d'un thread séparé de celui manipulant l'objet PGconn. @@ -4871,13 +5019,13 @@ char *PQresultVerboseErrorMessage(const PGresult *res, - + PQrequestCancel PQrequestCancel - PQrequestCancel est une variante obsolète de - PQcancel. + est une variante obsolète de + . int PQrequestCancel(PGconn *conn); @@ -4887,7 +5035,7 @@ char *PQresultVerboseErrorMessage(const PGresult *res, d'exécution. Elle opère directement sur l'objet PGconn et, en cas d'échec, stocke le message d'erreur dans l'objet PGconn (d'où il peut être récupéré avec - PQerrorMessage). Bien qu'il s'agisse de la même + ). Bien qu'il s'agisse de la même fonctionnalité, cette approche est hasardeuse dans les programmes multi-threads et les gestionnaires de signaux car il est possible que la surcharge du message d'erreur de @@ -4924,7 +5072,7 @@ char *PQresultVerboseErrorMessage(const PGresult *res, - La fonction PQfnPQfn demande + La fonction PQfnPQfn demande l'exécution d'une fonction du serveur via l'interface de chemin rapide : PGresult* PQfn(PGconn* conn, int fnid, @@ -4985,7 +5133,7 @@ char *PQresultVerboseErrorMessage(const PGresult *res, PGresult valide. L'état du résultat devrait être vérifié avant que le résultat ne soit utilisé. Le demandeur est responsable de la libération de la structure PGresult avec - PQclear lorsque celle-ci n'est plus nécessaire. + lorsque celle-ci n'est plus nécessaire. @@ -5021,7 +5169,7 @@ char *PQresultVerboseErrorMessage(const PGresult *res, comme des commandes SQL ordinaires. L'arrivée des messages NOTIFY peut être détectée ensuite en appelant - PQnotifies.PQnotifies + PQnotifies.PQnotifies @@ -5042,7 +5190,7 @@ char *PQresultVerboseErrorMessage(const PGresult *res, Après avoir traité un objet PGnotify renvoyé par PQnotifies, assurez-vous de libérer le pointeur - PQfreemem. Il est suffisant de libérer le pointeur + . Il est suffisant de libérer le pointeur PGnotify ; les champs relname et extra ne représentent pas des allocations séparées @@ -5062,25 +5210,25 @@ char *PQresultVerboseErrorMessage(const PGresult *res, versions de libpq, la seule façon de s'assurer une réception à temps des messages NOTIFY consistait à soumettre constamment des commandes de soumission, même vides, puis de vérifier - PQnotifies après chaque PQexec. Bien + PQnotifies après chaque . Bien que ceci fonctionnait, cela a été abandonné car un gaspillage de ressources. Une meilleure façon de vérifier les messages NOTIFY lorsque vous n'avez pas de commandes utiles à exécuter est d'appeler - PQconsumeInput puis de vérifier + puis de vérifier PQnotifies. Vous pouvez utiliser select() pour attendre l'arrivée des données à partir du serveur, donc sans utiliser de CPU sauf - lorsqu'il y a quelque chose à faire (voir PQsocket pour + lorsqu'il y a quelque chose à faire (voir pour obtenir le numéro du descripteur de fichiers à utiliser avec select()). Notez que ceci fonctionnera que vous soumettiez les commandes avec - PQsendQuery/PQgetResult ou que vous - utilisiez simplement PQexec. Néanmoins, vous devriez vous + / ou que vous + utilisiez simplement . Néanmoins, vous devriez vous rappeler de vérifier PQnotifies après chaque - PQgetResult ou PQexec pour savoir si + ou pour savoir si des notifications sont arrivées pendant le traitement de la commande. @@ -5104,7 +5252,7 @@ char *PQresultVerboseErrorMessage(const PGresult *res, Le traitement complet est le suivant. L'application lance tout d'abord la - commande SQL COPY via PQexec ou une + commande SQL COPY via PQexec ou une des fonctions équivalentes. La réponse à ceci (s'il n'y a pas d'erreur dans la commande) sera un objet PGresult avec un code de retour PGRES_COPY_OUT ou PGRES_COPY_IN (suivant @@ -5115,27 +5263,27 @@ char *PQresultVerboseErrorMessage(const PGresult *res, transfert. Son statut sera PGRES_COMMAND_OK en cas de succès et PGRES_FATAL_ERROR si un problème a été rencontré. À ce point, d'autres commandes SQL peuvent être exécutées via - PQexec (il n'est pas possible d'exécuter d'autres + (il n'est pas possible d'exécuter d'autres commandes SQL en utilisant la même connexion tant que l'opération COPY est en cours). Si une commande COPY est lancée via - PQexec dans une chaîne qui pourrait contenir d'autres + dans une chaîne qui pourrait contenir d'autres commandes supplémentaires, l'application doit continuer à récupérer les - résultats via PQgetResult après avoir terminé la séquence - COPY. C'est seulement quand PQgetResult renvoie + résultats via après avoir terminé la séquence + COPY. C'est seulement quand renvoie NULL que vous pouvez être certain que la chaîne de commandes - PQexec est terminée et qu'il est possible de lancer + est terminée et qu'il est possible de lancer d'autres commandes. Les fonctions de cette section devraient seulement être exécutées pour obtenir un statut de résultat PGRES_COPY_OUT ou - PGRES_COPY_IN à partir de PQexec ou - PQgetResult. + PGRES_COPY_IN à partir de ou + . @@ -5145,7 +5293,7 @@ char *PQresultVerboseErrorMessage(const PGresult *res, aussi utilisées en relation avec les résultats de requêtes : - + PQnfieldsPQnfieldswith COPY @@ -5154,7 +5302,7 @@ char *PQresultVerboseErrorMessage(const PGresult *res, - + PQbinaryTuplesPQbinaryTupleswith COPY @@ -5168,7 +5316,7 @@ char *PQresultVerboseErrorMessage(const PGresult *res, - + PQfformatPQfformatwith COPY @@ -5204,7 +5352,7 @@ char *PQresultVerboseErrorMessage(const PGresult *res, - + PQputCopyDataPQputCopyData @@ -5221,7 +5369,7 @@ char *PQresultVerboseErrorMessage(const PGresult *res, vaut 1 si les données ont été placées dans la queue, zéro si elles n'ont pas été placées dans la queue à casue de tampons pleins (cela n'arrivera qu'en mode non bloquant) ou -1 si une erreur s'est produite. (Utilisez - PQerrorMessage pour récupérer des détails si la valeur de + pour récupérer des détails si la valeur de retour vaut -1. Si la valeur vaut zéro, attendez qu'il soit prêt à écrire et ré-essayez). @@ -5237,7 +5385,7 @@ char *PQresultVerboseErrorMessage(const PGresult *res, - + PQputCopyEndPQputCopyEnd @@ -5266,20 +5414,20 @@ char *PQresultVerboseErrorMessage(const PGresult *res, terminaison a été correctement mis en file d'attente. (En mode non bloquant, pour être certain que les données ont été correctement envoyées, vous devriez ensuite attendre que le mode écriture soit - disponible puis appeler PQflush, à répéter + disponible puis appeler , à répéter jusqu'à ce que 0 soit renvoyé). Zéro indique que la fonction n'a pas pu mettre en file d'attente le message de terminaison à cause d'une file pleine ; ceci ne peut survenir qu'en mode non bloquant. (Dans ce cas, attendez que le mode écriture soit disponible puis rappelez - à nouveau la fonction PQputCopyEnd). Si + à nouveau la fonction ). Si une erreur physique survient, -1 est renvoyé ; vous pouvez alors - appeler PQerrorMessage pour avoir plus de + appeler pour avoir plus de détails sur l'erreur. - Après un appel réussi à PQputCopyEnd, appelez - PQgetResult pour obtenir le statut de résultat final de la commande + Après un appel réussi à , appelez + pour obtenir le statut de résultat final de la commande COPY. Vous pouvez attendre que le résultat soit disponible de la même façon. Puis, retournez au fonctionnement normal. @@ -5299,7 +5447,7 @@ char *PQresultVerboseErrorMessage(const PGresult *res, - + PQgetCopyDataPQgetCopyData @@ -5319,7 +5467,7 @@ char *PQresultVerboseErrorMessage(const PGresult *res, pas être NULL. *buffer est initialisé pour pointer vers la mémoire allouée ou vers NULL au cas où aucun tampon n'est renvoyé. Un tampon résultat non NULL devra être - libéré en utilisant PQfreemem lorsqu'il ne sera plus utile. + libéré en utilisant lorsqu'il ne sera plus utile. @@ -5331,23 +5479,23 @@ char *PQresultVerboseErrorMessage(const PGresult *res, qu'aucune ligne n'est encore disponible (ceci est seulement possible lorsque async est vrai). Un résultat -1 indique que COPY a terminé. Un résultat -2 indique qu'une erreur est - survenue (consultez PQerrorMessage pour en connaître la raison). + survenue (consultez pour en connaître la raison). Lorsque async est vraie (différent de zéro), - PQgetCopyData ne bloquera pas en attente d'entrée ; il + ne bloquera pas en attente d'entrée ; il renverra zéro si COPY est toujours en cours mais qu'aucune ligne n'est encore disponible. (Dans ce cas, attendez qu'il soit prêt à - lire puis appelez PQconsumeInput avant d'appeler - PQgetCopyData de nouveau). Quand async est faux (zéro), - PQgetCopyData bloquera tant que les données ne seront pas + lire puis appelez avant d'appeler + de nouveau). Quand async est faux (zéro), + bloquera tant que les données ne seront pas disponibles ou tant que l'opération n'aura pas terminée. - Après que PQgetCopyData a renvoyé -1, appelez - PQgetResult pour obtenir le statut de résultat final de la commande + Après que a renvoyé -1, appelez + pour obtenir le statut de résultat final de la commande COPY. On peut attendre la disponibilité de ce résultat comme d'habitude. Puis, retournez aux opérations habituelles. @@ -5369,7 +5517,7 @@ char *PQresultVerboseErrorMessage(const PGresult *res, - + PQgetlinePQgetline @@ -5383,7 +5531,7 @@ char *PQresultVerboseErrorMessage(const PGresult *res, Cette fonction copie jusqu'à length-1 caractères dans le tampon - et convertit le retour chariot en un octet nul. PQgetline + et convertit le retour chariot en un octet nul. renvoie EOF à la fin de l'entrée, 0 si la ligne entière a été lue et 1 si le tampon est complet mais que le retour chariot à la fin n'a pas encore été lu. @@ -5400,7 +5548,7 @@ char *PQresultVerboseErrorMessage(const PGresult *res, - + PQgetlineAsyncPQgetlineAsync @@ -5413,27 +5561,27 @@ char *PQresultVerboseErrorMessage(const PGresult *res, - Cette fonction est similaire à PQgetline mais elle peut + Cette fonction est similaire à mais elle peut être utilisée par des applications qui doivent lire les données de COPY de façon asynchrone, c'est-à-dire sans blocage. Après avoir lancé la commande COPY et obtenu une réponse PGRES_COPY_OUT, l'application devrait appeler - PQconsumeInput et - PQgetlineAsync jusqu'à ce que le signal de fin des données + et + jusqu'à ce que le signal de fin des données soit détecté. - Contrairement à PQgetline, cette fonction prend la + Contrairement à , cette fonction prend la responsabilité de détecter la fin de données. - À chaque appel, PQgetlineAsync renverra des données si une + À chaque appel, renverra des données si une ligne de données complète est disponible dans le tampon d'entrée de libpq. Sinon, aucune ligne n'est renvoyée jusqu'à l'arrivée du reste de la ligne. La fonction renvoie -1 si le marqueur de fin de copie des données a été reconnu, 0 si aucune donnée n'est disponible ou un nombre positif indiquant le nombre d'octets renvoyés. Si -1 est renvoyé, l'appelant - doit ensuite appeler PQendcopy puis retourner aux + doit ensuite appeler puis retourner aux traitements habituels. @@ -5452,7 +5600,7 @@ char *PQresultVerboseErrorMessage(const PGresult *res, - + PQputlinePQputline @@ -5465,10 +5613,10 @@ char *PQresultVerboseErrorMessage(const PGresult *res, Le flux de données de COPY envoyé par une série d'appels à - PQputline a le même format que celui renvoyé par - PQgetlineAsync, sauf que les applications ne sont pas + a le même format que celui renvoyé par + , sauf que les applications ne sont pas obligées d'envoyer exactement une ligne de données par appel à - PQputline ; il est correct d'envoyer une ligne +  ; il est correct d'envoyer une ligne partielle ou plusieurs lignes par appel. @@ -5481,13 +5629,13 @@ char *PQresultVerboseErrorMessage(const PGresult *res, Bien que ceci fonctionne toujours, cette méthode est obsolète et la signification spéciale de \. pourrait être supprimée dans une prochaine version. Il est suffisant d'appeler - PQendcopy après avoir envoyé les vraies données. + après avoir envoyé les vraies données. - + PQputnbytesPQputnbytes @@ -5500,7 +5648,7 @@ char *PQresultVerboseErrorMessage(const PGresult *res, - C'est exactement comme PQputline, sauf que le tampon de + C'est exactement comme , sauf que le tampon de données n'a pas besoin d'être terminé avec un octet nul car le nombre d'octets envoyés est spécifié directement. Utilisez cette procédure pour envoyer des données binaires. @@ -5508,7 +5656,7 @@ char *PQresultVerboseErrorMessage(const PGresult *res, - + PQendcopyPQendcopy @@ -5517,35 +5665,35 @@ char *PQresultVerboseErrorMessage(const PGresult *res, Cette fonction attend que le serveur ait terminé la copie. Elle devrait indiquer soit le moment où la dernière chaîne a été envoyée au serveur en utilisant - PQputline, soit le moment où la dernière chaîne a été reçue + , soit le moment où la dernière chaîne a été reçue du serveur en utilisant PQgetline. Si ce n'est pas fait, le serveur renverra un out of sync (perte de synchronisation) au client. Au retour de cette fonction, le serveur est prêt à recevoir la prochaine commande SQL. Le code de retour 0 indique un succès complet et est différent de zéro dans le cas contraire (utilisez - PQerrorMessage pour récupérer des détails sur l'échec). + pour récupérer des détails sur l'échec). - Lors de l'utilisation de PQgetResult, l'application + Lors de l'utilisation de , l'application devrait répondre à un résultat PGRES_COPY_OUT en exécutant - PQgetline de façon répétée, suivi par un - PQendcopy une fois la ligne de terminaison aperçue. - Il devrait ensuite retourner à la boucle PQgetResult - jusqu'à ce que PQgetResult renvoie un pointeur NULL. De + de façon répétée, suivi par un + une fois la ligne de terminaison aperçue. + Il devrait ensuite retourner à la boucle + jusqu'à ce que renvoie un pointeur NULL. De façon similaire, un résultat PGRES_COPY_IN est traité par une - série d'appels à PQputline suivis par un - PQendcopy, ensuite retour à la boucle - PQgetResult. Cet arrangement vous assurera qu'une commande + série d'appels à suivis par un + , ensuite retour à la boucle + . Cet arrangement vous assurera qu'une commande COPY intégrée dans une série de commandes SQL sera exécutée correctement. Les anciennes applications sont susceptibles de soumettre un - COPY via PQexec et supposent que + COPY via et supposent que la transaction est faite après un - PQendcopy. Ceci fonctionnera correctement seulement si + . Ceci fonctionnera correctement seulement si COPY est la seule commande SQL dans la chaîne de commandes. @@ -5566,7 +5714,7 @@ char *PQresultVerboseErrorMessage(const PGresult *res, - + PQclientEncoding @@ -5592,7 +5740,7 @@ char *PQresultVerboseErrorMessage(const PGresult *res, - + PQsetClientEncoding @@ -5611,17 +5759,17 @@ char *PQresultVerboseErrorMessage(const PGresult *res, encoding est l'encodage que vous voulez utiliser. Si la fonction initialise l'encodage avec succès, elle renvoie 0, sinon -1. L'encodage en cours pour cette connexion peut être - déterminé en utilisant PQclientEncoding. + déterminé en utilisant . - + PQsetErrorVerbosityPQsetErrorVerbosity Détermine la verbosité des messages renvoyés par - PQerrorMessage et PQresultErrorMessage. + et . typedef enum { PQERRORS_TERSE, @@ -5632,7 +5780,7 @@ char *PQresultVerboseErrorMessage(const PGresult *res, PGVerbosity PQsetErrorVerbosity(PGconn *conn, PGVerbosity verbosity); - PQsetErrorVerbosity initialise le mode de verbosité, renvoyant le + initialise le mode de verbosité, renvoyant le paramétrage précédant de cette connexion. Dans le mode TERSE, les messages renvoyés incluent seulement la sévérité, le texte principal et la @@ -5649,13 +5797,13 @@ char *PQresultVerboseErrorMessage(const PGresult *res, Modifier la verbosité n'affecte pas les messages disponibles à partir d'objets PGresult déjà existants, seulement ceux créés après. - (Mais voyez PQresultVerboseErrorMessage si vous voulez + (Mais voyez si vous voulez afficher une erreur précédente avec une verbosité différente). - + PQsetErrorContextVisibility @@ -5666,8 +5814,8 @@ char *PQresultVerboseErrorMessage(const PGresult *res, Détermine la gestion des champs CONTEXT dans les - messages renvoyées par PQerrorMessage et - PQresultErrorMessage. + messages renvoyées par + et . typedef enum { @@ -5679,7 +5827,7 @@ typedef enum PGContextVisibility PQsetErrorContextVisibility(PGconn *conn, PGContextVisibility show_context); - PQsetErrorContextVisibility configure le mode + configure le mode d'affichage du contexte, renvoyant la précédente configuration de la connexion. Ce mode contrôle si le champ CONTEXT est inclus dans les messages. Le mode NEVER n'inclut jamais @@ -5696,14 +5844,14 @@ PGContextVisibility PQsetErrorContextVisibility(PGconn *conn, PGContextVisibilit La modification de ce mode n'affecte pas les messages disponibles à partir des objets PGresult déjà existants, seulement ceux créés - après. (Cependant, voyez PQresultVerboseErrorMessage + après. (Cependant, voyez si vous voulez afficher une erreur précédente avec un mode d'affichage différent.) - + PQtracePQtrace @@ -5725,11 +5873,11 @@ PGContextVisibility PQsetErrorContextVisibility(PGconn *conn, PGContextVisibilit - + PQuntracePQuntrace - Désactive les traces commencées avec PQtrace. + Désactive les traces commencées avec . void PQuntrace(PGconn *conn); @@ -5747,13 +5895,8 @@ PGContextVisibility PQsetErrorContextVisibility(PGconn *conn, PGContextVisibilit - - - PQfreemem - - PQfreemem - - + + PQfreememPQfreemem @@ -5765,8 +5908,9 @@ PGContextVisibility PQsetErrorContextVisibility(PGconn *conn, PGContextVisibilit Libère la mémoire allouée par libpq, - particulièrement PQescapeByteaConn, - PQescapeBytea, PQunescapeBytea, + particulièrement , + , + , et PQnotifies. Il est particulièrement important que cette fonction, plutôt que free(), soit utilisée sur Microsoft Windows. Ceci est dû au fait qu'allouer de la mémoire dans une @@ -5779,32 +5923,26 @@ PGContextVisibility PQsetErrorContextVisibility(PGconn *conn, PGContextVisibilit - - - PQconninfoFree - - PQconninfoFree - - + + PQconninfoFreePQconninfoFree Libère les structures de données allouées par - PQconndefaults ou - PQconninfoParse. + ou . void PQconninfoFree(PQconninfoOption *connOptions); - Un simple appel à PQfreemem ne suffira pas car le + Un simple appel à ne suffira pas car le tableau contient des références à des chaînes complémentaires. - + PQencryptPasswordConnPQencryptPasswordConn @@ -5840,7 +5978,7 @@ PGContextVisibility PQsetErrorContextVisibility(PGconn *conn, PGContextVisibilit occupée à effectuer une autre requête. Si vous souhaitez utiliser l'algorithme par défaut du serveur mais que vous voulez éviter un blocage, vérifiez vous-même password_encryption avant - d'appeler PQencryptPasswordConn, et fournissez cette + d'appeler , et fournissez cette valeur pour algorithm. @@ -5848,7 +5986,7 @@ PGContextVisibility PQsetErrorContextVisibility(PGconn *conn, PGContextVisibilit La valeur retournée est une chaîne allouée par malloc. L'appelant peut partir du principe que la chaîne ne contient pas de caractères spéciaux qui nécessiteraient un - échappement. Utilisez PQfreemem pour libérer le + échappement. Utilisez pour libérer le résultat quand vous avez fini de l'utiliser. En cas d'erreur, NULL est retourné, et un message d'erreur adéquat est stocké dans l'objet de connexion. @@ -5857,13 +5995,8 @@ PGContextVisibility PQsetErrorContextVisibility(PGconn *conn, PGContextVisibilit - - - PQencryptPassword - - PQencryptPassword - - + + PQencryptPasswordPQencryptPassword @@ -5872,22 +6005,17 @@ PGContextVisibility PQsetErrorContextVisibility(PGconn *conn, PGContextVisibilit char *PQencryptPassword(const char *passwd, const char *user); - PQencryptPassword est une version ancienne et - obsolète de PQencryptPasswordConn. La différence - est que PQencryptPassword ne nécessite pas d'objet + est une version ancienne et + obsolète de . La différence + est que ne nécessite pas d'objet de connexion, et que l'algorithme de chiffrement utilisé est toujours md5. - - - PQmakeEmptyPGresult - - PQmakeEmptyPGresult - - + + PQmakeEmptyPGresultPQmakeEmptyPGresult @@ -5912,21 +6040,16 @@ char *PQencryptPassword(const char *passwd, const char *user); enregistrée dans la connexion est copiée dans le PGresult. (Elles n'obtiennent pas d'appels PGEVT_RESULTCREATE, mais jetez un œil à - PQfireResultCreateEvents.) - Notez que PQclear devra être appelé sur l'objet, + .) + Notez que devra être appelé sur l'objet, comme pour un PGresult renvoyé par libpq lui-même. - - - PQfireResultCreateEvents - - PQfireResultCreateEvents - - + + PQfireResultCreateEventsPQfireResultCreateEvents Déclenche un événement PGEVT_RESULTCREATE (voir La raison principale pour séparer cette fonction de - PQmakeEmptyPGresult est qu'il est souvent approprié + est qu'il est souvent approprié de créer un PGresult et de le remplir avec des données avant d'appeler les procédures d'événement. - - - PQcopyResult - - PQcopyResult - - + + PQcopyResultPQcopyResult Fait une copie de l'objet PGresult. La copie n'est liée en aucune façon au résultat source et - PQclear doit être appelée quand la copie n'est + doit être appelée quand la copie n'est plus nécessaire. Si la fonction échoue, NULL est renvoyé. @@ -6000,13 +6118,8 @@ char *PQencryptPassword(const char *passwd, const char *user); - - - PQsetResultAttrs - - PQsetResultAttrs - - + + PQsetResultAttrsPQsetResultAttrs @@ -6028,13 +6141,8 @@ char *PQencryptPassword(const char *passwd, const char *user); - - - PQsetvalue - - PQsetvalue - - + + PQsetvaluePQsetvalue @@ -6049,7 +6157,7 @@ char *PQencryptPassword(const char *passwd, const char *user); La fonction fera automatiquement grossir le tableau de lignes internes des résultats, si nécessaire. Néanmoins, l'argument tup_num doit être inférieur ou égal à - PQntuples, ceci signifiant que la fonction peut + , ceci signifiant que la fonction peut seulement faire grossir le tableau des lignes une ligne à la fois. Mais tout champ d'une ligne existante peut être modifié dans n'importe quel ordre. Si une valeur à field_num existe déjà, elle @@ -6064,13 +6172,8 @@ char *PQencryptPassword(const char *passwd, const char *user); - - - PQresultAlloc - - PQresultAlloc - - + + PQresultAllocPQresultAlloc @@ -6091,13 +6194,8 @@ char *PQencryptPassword(const char *passwd, const char *user); - - - PQresultMemorySize - - PQresultMemorySize - - + + PQresultMemorySizePQresultMemorySize @@ -6111,20 +6209,14 @@ size_t PQresultMemorySize(const PGresult *res); This value is the sum of all malloc requests associated with the PGresult object, that is, - all the space that will be freed by PQclear. + all the space that will be freed by . This information can be useful for managing memory consumption. - - - PQlibVersion - - PQlibVersion - PQserverVersion - - + + PQlibVersionPQlibVersionPQserverVersion @@ -6140,7 +6232,7 @@ size_t PQresultMemorySize(const PGresult *res); à l'exécution, si certaines fonctionnalités spécifiques sont disponibles dans la version chargée de libpq. Par exemple, cette fonction peut être utilisée pour déterminer les options de - connexions disponibles pour PQconnectdb. + connexions disponibles pour . @@ -6154,7 +6246,7 @@ size_t PQresultMemorySize(const PGresult *res); Avant la version majeure 10, PostgreSQL utilisait des numéros de version en trois parties, pour lesquelles les deux premières parties représentaient la version majeure. Pour ces - versions, PQlibVersion utilise deux chiffres pour + versions, utilise deux chiffres pour chaque partie. Par exemple, la version 9.1.5 renverra 90105, et la version 9.2.0 renverra 90200. @@ -6162,7 +6254,7 @@ size_t PQresultMemorySize(const PGresult *res); De ce fait, pour déterminer la compatibilité de certaines fonctionnalités, les applications devraient diviser le résultat de - PQlibVersion par 100, et non pas par 10000, pour + par 100, et non pas par 10000, pour déterminer le numéro de version majeure logique. Dans toutes les versions, seuls les deux derniers chiffres diffèrent entre des versions mineures (versions correctives). @@ -6212,11 +6304,11 @@ size_t PQresultMemorySize(const PGresult *res); - La fonction PQsetNoticeReceiver + La fonction PQsetNoticeReceiver receveur de messagePQsetNoticeReceiver initialise ou examine le receveur actuel de messages pour un objet de - connexion. De la même façon, PQsetNoticeProcessor + connexion. De la même façon, PQsetNoticeProcessor traiteur de messages PQsetNoticeProcessor initialise ou examine l'émetteur actuel de messages. @@ -6247,15 +6339,15 @@ size_t PQresultMemorySize(const PGresult *res); message est appelée. Le message lui est passé sous la forme d'un PGresult PGRES_NONFATAL_ERROR (ceci permet au receveur d'extraire les champs individuels en utilisant - PQresultErrorField ou d'obtenir le message complet préformaté en utilisant - PQresultErrorMessage ou PQresultVerboseErrorMessage). Le même pointeur void passé à + ou d'obtenir le message complet préformaté en utilisant + ou ). Le même pointeur void passé à PQsetNoticeReceiver est aussi renvoyé (ce pointeur peut être utilisé pour accéder à un état spécifique de l'application si nécessaire). Le receveur de messages par défaut extrait simplement le message (en utilisant - PQresultErrorMessage) et le passe au système de traitement du + ) et le passe au système de traitement du message. @@ -6284,7 +6376,7 @@ size_t PQresultMemorySize(const PGresult *res); PGresult réalisé à partir de celle-ci existent. À la création d'un PGresult, les pointeurs de gestion courants de PGconn sont copiés dans PGresult pour une - utilisation possible par des fonctions comme PQgetvalue. + utilisation possible par des fonctions comme . @@ -6316,8 +6408,9 @@ size_t PQresultMemorySize(const PGresult *res); instanciées, qui commence à NULL dans chaque objet PGconn et PGresult. Ce pointeur peut être manipulé en utilisant les fonctions - PQinstanceData, PQsetInstanceData, - PQresultInstanceData et + , + , + et PQsetResultInstanceData. Notez que, contrairement au pointeur passthrough, les PGresult n'héritent pas automatiquement des données instanciées d'un @@ -6344,7 +6437,7 @@ size_t PQresultMemorySize(const PGresult *res); PGEVT_REGISTER - L'événement d'enregistrement survient quand PQregisterEventProc + L'événement d'enregistrement survient quand est appelé. C'est le moment idéal pour initialiser toute structure instanceData qu'une procédure d'événement pourrait avoir besoin. Seul un événement d'enregistrement sera déclenché par gestionnaire @@ -6363,7 +6456,7 @@ size_t PQresultMemorySize(const PGresult *res); PGEventRegister *. Cette structure contient un PGconn qui doit être dans le statut CONNECTION_OK ; garanti si - PQregisterEventProc est appelé juste après avoir + est appelé juste après avoir obtenu un bon PGconn. Lorsqu'elle renvoit un code d'erreur, le nettoyage doit être réalisé car aucun événement PGEVT_CONNDESTROY ne sera envoyé. @@ -6376,7 +6469,7 @@ size_t PQresultMemorySize(const PGresult *res); L'événement de réinitialisation de connexion est déclenché après un - PQreset ou un PQresetPoll. Dans + ou un PQresetPoll. Dans les deux cas, l'événement est seulement déclenché si la ré-initialisation est réussie. Si la procédure échoue, la réinitialisation de connexion échouera ; la structure PGconn est placée @@ -6409,7 +6502,7 @@ size_t PQresultMemorySize(const PGresult *res); L'événement de destruction de la connexion est déclenché en réponse - à PQfinish. Il est de la responsabilité de la + à . Il est de la responsabilité de la procédure de l'événement de nettoyer proprement ses données car libpq n'a pas les moyens de gérer cette mémoire. Un échec du nettoyage amènera des fuites de mémoire. @@ -6424,9 +6517,9 @@ size_t PQresultMemorySize(const PGresult *res); Quand un événement PGEVT_CONNDESTROY est reçu, le pointeur evtInfo doit être converti en un PGEventConnDestroy *. Cet événement est - déclenché avant que PQfinish ne réalise d'autres + déclenché avant que ne réalise d'autres nettoyages. La valeur de retour de la procédure est ignorée car il - n'y a aucun moyen d'indiquer un échec de PQfinish. + n'y a aucun moyen d'indiquer un échec de . De plus, un échec de la procédure ne doit pas annuler le nettoyage de la mémoire non désirée. @@ -6439,7 +6532,7 @@ size_t PQresultMemorySize(const PGresult *res); L'événement de création de résultat est déclenché en réponse à l'utilisation d'une fonction d'exécution d'une requête, par exemple - PQgetResult. Cet événement sera déclenché seulement + . Cet événement sera déclenché seulement après la création réussie du résultat. @@ -6458,7 +6551,7 @@ size_t PQresultMemorySize(const PGresult *res); instanceData qui doit être associé avec le résultat. Si la procédure échoue, le résultat sera effacé et l'échec sera propagé. La procédure d'événement ne doit pas tenter elle-même un - PQclear sur l'objet résultat. + sur l'objet résultat. Lors du renvoi d'un code d'échec, tout le nettoyage doit être fait car aucun événement PGEVT_RESULTDESTROY ne sera envoyé. @@ -6471,7 +6564,7 @@ size_t PQresultMemorySize(const PGresult *res); L'événement de copie du résultat est déclenché en réponse à un - PQcopyResult. Cet événement se déclenchera + . Cet événement se déclenchera seulement une fois la copie terminée. Seules les procédures qui ont géré avec succès l'événement PGEVT_RESULTCREATE ou PGEVT_RESULTCOPY pour le résultat source recevront @@ -6507,7 +6600,7 @@ size_t PQresultMemorySize(const PGresult *res); L'événement de destruction de résultat est déclenché en réponse à la - fonction PQclear. Il est de la responsabilité de + fonction . Il est de la responsabilité de l'événement de nettoyer proprement les données de l'événement car libpq n'a pas la capacité de gérer cette mémoire. Si le nettoyage échoue, cela sera la cause de pertes mémoire. @@ -6522,10 +6615,10 @@ size_t PQresultMemorySize(const PGresult *res); Quand un événement PGEVT_RESULTDESTROY est reçu, le pointeur evtInfo doit être converti en un PGEventResultDestroy *. Cet événement est - déclenché avant que PQclear ne puisse faire de + déclenché avant que ne puisse faire de nettoyage. La valeur de retour de la procédure est ignorée car il n'existe aucun moyen d'indiquer un échec à partir de - PQclear. De plus, un échec de la procédure ne doit + . De plus, un échec de la procédure ne doit pas annuler le nettoyage de la mémoire non désirée. @@ -6537,13 +6630,8 @@ size_t PQresultMemorySize(const PGresult *res); Procédure de rappel de l'événement - - - PGEventProc - - PGEventProc - - + + PGEventProcPGEventProc @@ -6561,7 +6649,7 @@ size_t PQresultMemorySize(const PGresult *res); evtInfo doit être converti vers le type de structure approprié pour obtenir plus d'informations sur l'événement. Le paramètre passThrough est le pointeur fourni - à PQregisterEventProc quand la procédure de + à quand la procédure de l'événement a été enregistrée. La fonction doit renvoyer une valeur différente de zéro en cas de succès et zéro en cas d'échec. @@ -6595,13 +6683,8 @@ size_t PQresultMemorySize(const PGresult *res); Fonctions de support des événements - - - PQregisterEventProc - - PQregisterEventProc - - + + PQregisterEventProcPQregisterEventProc @@ -6637,13 +6720,8 @@ size_t PQresultMemorySize(const PGresult *res); - - - PQsetInstanceData - - PQsetInstanceData - - + + PQsetInstanceDataPQsetInstanceData Initialise avec data @@ -6661,13 +6739,8 @@ size_t PQresultMemorySize(const PGresult *res); - - - PQinstanceData - - PQinstanceData - - + + PQinstanceDataPQinstanceData Renvoie l'instanceData de la connexion @@ -6682,13 +6755,8 @@ size_t PQresultMemorySize(const PGresult *res); - - - PQresultSetInstanceData - - PQresultSetInstanceData - - + + PQresultSetInstanceDataPQresultSetInstanceData Initialise avec data @@ -6705,21 +6773,16 @@ size_t PQresultMemorySize(const PGresult *res); Beware that any storage represented by data - will not be accounted for by PQresultMemorySize, - unless it is allocated using PQresultAlloc. + will not be accounted for by , + unless it is allocated using . (Doing so is recommendable because it eliminates the need to free such storage explicitly when the result is destroyed.) - - - PQresultInstanceData - - PQresultInstanceData - - + + PQresultInstanceDataPQresultInstanceData Renvoie l'instanceData du résultat associé à @@ -6901,12 +6964,12 @@ myEventProc(PGEventId evtId, void *evtInfo, void *passThrough) Les variables d'environnement suivantes peuvent être utilisées pour - sélectionner des valeurs par défaut pour les paramètres de connexion, valeurs - qui seront utilisées par PQconnectdb, PQsetdbLogin et - PQsetdb si aucune valeur n'est directement précisée par - le code appelant. Elles sont utiles pour éviter de coder en dur les - informations de connexion à la base de données dans les applications - clients, par exemple. + sélectionner des valeurs par défaut pour les paramètres de connexion, + valeurs qui seront utilisées par , et si aucune + valeur n'est directement précisée par le code appelant. Elles sont utiles + pour éviter de coder en dur les informations de connexion à la base de + données dans les applications clients, par exemple. @@ -6979,6 +7042,15 @@ myEventProc(PGEventId evtId, void *evtInfo, void *passThrough) connexion . + + + + PGCHANNELBINDING + + PGCHANNELBINDING behaves the same as the connection parameter. + + @@ -7102,6 +7174,26 @@ myEventProc(PGEventId evtId, void *evtInfo, void *passThrough) + + + + PGSSLMINPROTOCOLVERSION + + PGSSLMINPROTOCOLVERSION behaves the same as the connection parameter. + + + + + + + PGSSLMAXPROTOCOLVERSION + + PGSSLMAXPROTOCOLVERSION behaves the same as the connection parameter. + + + @@ -7591,6 +7683,24 @@ ldap://ldap.mycompany.com/dc=mycompany,dc=com?description?one?(cn=mydatabase) certificats intermédiaires sur le serveur (). + + The certificate and key may be in PEM or ASN.1 DER format. + + + + The key may be + stored in cleartext or encrypted with a passphrase using any algorithm supported + by OpenSSL, like AES-128. If the key is stored encrypted, then the passphrase + may be provided in the connection + option. If an encrypted key is supplied and the sslpassword + option is absent or blank, a password will be prompted for interactively by + OpenSSL with a Enter PEM pass phrase: + prompt if a TTY is available. Applications can override the client certificate + prompt and the handling of the sslpassword parameter by supplying + their own key password callback; see + . + + Pour des instructions sur la création de certificats, voir . @@ -7688,6 +7798,10 @@ ldap://ldap.mycompany.com/dc=mycompany,dc=com?description?one?(cn=mydatabase)
Description des modes SSL + + + + sslmode @@ -7842,7 +7956,7 @@ ldap://ldap.mycompany.com/dc=mycompany,dc=com?description?one?(cn=mydatabase) Si votre application initialise les bibliothèques libssl et/ou libcrypto et que libpq est construit avec le support de SSL, vous devez appeler - la fonction PQinitOpenSSL pour indiquer à + la fonction pour indiquer à libpq que les bibliothèques libssl et/ou libcrypto ont été initialisées par votre application, de façon à ce que @@ -7855,13 +7969,8 @@ ldap://ldap.mycompany.com/dc=mycompany,dc=com?description?one?(cn=mydatabase) - - - PQinitOpenSSL - - PQinitOpenSSL - - + + PQinitOpenSSLPQinitOpenSSL @@ -7878,7 +7987,7 @@ ldap://ldap.mycompany.com/dc=mycompany,dc=com?description?one?(cn=mydatabase) OpenSSL avant d'ouvrir une connexion à la base de données. Quand do_crypto est différent de zéro, la bibliothèque libcrypto sera initialisée. Par - défaut (si PQinitOpenSSL n'est pas appelé), les deux + défaut (si n'est pas appelé), les deux bibliothèques sont initialisées. Quand le support de SSL n'est pas intégré, cette fonction est présente mais ne fait rien. @@ -7894,13 +8003,8 @@ ldap://ldap.mycompany.com/dc=mycompany,dc=com?description?one?(cn=mydatabase) - - - PQinitSSL - - PQinitSSL - - + + PQinitSSLPQinitSSL @@ -7919,11 +8023,11 @@ ldap://ldap.mycompany.com/dc=mycompany,dc=com?description?one?(cn=mydatabase) - PQinitSSL est présente depuis + est présente depuis PostgreSQL 8.0, alors que - PQinitOpenSSL a été ajoutée dans + a été ajoutée dans PostgreSQL 8.4, donc - PQinitSSL peut être préférée pour les applications + peut être préférée pour les applications qui ont besoin de fonctionner avec les anciennes versions de libpq. @@ -7956,7 +8060,7 @@ ldap://ldap.mycompany.com/dc=mycompany,dc=com?description?one?(cn=mydatabase) - + PQisthreadsafePQisthreadsafe @@ -7995,12 +8099,12 @@ ldap://ldap.mycompany.com/dc=mycompany,dc=com?description?one?(cn=mydatabase) Les fonctions obsolètes - PQrequestCancel et - PQoidStatus - ne gèrent pas les threads et ne devraient pas être utilisées dans des programmes multithreads. PQrequestCancel peut être - remplacé par PQcancel. - PQoidStatus peut être remplacé par - PQoidValue. + et + + ne gèrent pas les threads et ne devraient pas être utilisées dans des programmes multithreads. peut être + remplacé par . + peut être remplacé par + . @@ -8490,10 +8594,11 @@ main(int argc, char **argv) * * CREATE SCHEMA testlibpq3; * SET search_path = testlibpq3; + * SET standard_conforming_strings = ON; * CREATE TABLE test1 (i int4, t text, b bytea); * - * INSERT INTO test1 values (1, 'joe''s place', '\\000\\001\\002\\003\\004'); - * INSERT INTO test1 values (2, 'ho there', '\\004\\003\\002\\001\\000'); + * INSERT INTO test1 values (1, 'joe''s place', '\000\001\002\003\004'); + * INSERT INTO test1 values (2, 'ho there', '\004\003\002\001\000'); * * La sortie attendue est : * diff --git a/postgresql/lo.xml b/postgresql/lo.xml index d40a2db6c..4494f07e6 100644 --- a/postgresql/lo.xml +++ b/postgresql/lo.xml @@ -17,6 +17,12 @@ lo et un trigger lo_manage. + + This module is considered trusted, that is, it can be + installed by non-superusers who have CREATE privilege + on the current database. + + Aperçu diff --git a/postgresql/lobj.xml b/postgresql/lobj.xml index 7ea0e5118..2e3af7f95 100644 --- a/postgresql/lobj.xml +++ b/postgresql/lobj.xml @@ -118,7 +118,7 @@ Si une erreur survient lors de l'exécution de ces fonctions, la fonction renverra une valeur autrement impossible, typiquement 0 or -1. Un message décrivant l'erreur est stocké dans l'objet de connexion et peut être - récupéré avec la fonction PQerrorMessage. + récupéré avec la fonction . @@ -526,70 +526,82 @@ int lo_truncate64(PGcon *conn, int fd, pg_int64 len); SQL sont listées dans . -
- Fonctions SQL pour les Large Objects - - - - Fonction - Type en retour - Description - Exemple - Résultat - - - - - - - - lo_from_bytea - - lo_from_bytea(loid oid, string bytea) - - oid - - Crée un Large Object et y stocke les données, renvoyant son OID. - Passez la valeur 0 pour que le système choisisse un - OID. - - lo_from_bytea(0, '\xffffff00') - 24528 - - - - - - lo_put - - lo_put(loid oid, offset bigint, str bytea) - - void - - Écrit les données au décalage indiqué. - - lo_put(24528, 1, '\xaa') - - - - - - - lo_get - - lo_get(loid oid , from bigint, for int) - - bytea - - Extrait le contenu ou une sous-chaîne du contenu. - - lo_get(24528, 0, 3) - \xffaaff - - - - -
+ + SQL-Oriented Large Object Functions + + + + + Function + + + Description + + + Example(s) + + + + + + + + + lo_from_bytea + + lo_from_bytea ( loid oid, data bytea ) + oid + + + Creates a large object and stores data in it. + If loid is zero then the system will choose a + free OID, otherwise that OID is used (with an error if some large + object already has that OID). On success, the large object's OID is + returned. + + + lo_from_bytea(0, '\xffffff00') + 24528 + + + + + + + lo_put + + lo_put ( loid oid, offset bigint, data bytea ) + void + + + Writes data starting at the given offset within + the large object; the large object is enlarged if necessary. + + + lo_put(24528, 1, '\xaa') + + + + + + + + lo_get + + lo_get ( loid oid , offset bigint, length integer ) + bytea + + + Extracts the large object's contents, or a substring thereof. + + + lo_get(24528, 0, 3) + \xffaaff + + + + +
Il existe d'autres fonctions côté serveur correspondant à chacune des @@ -690,7 +702,7 @@ SELECT lo_export(image.donnees, '/tmp/motd') FROM image * testlo.c * test utilisant des objets larges avec libpq * - * Portions Copyright (c) 1996-2019, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * diff --git a/postgresql/logical-replication.xml b/postgresql/logical-replication.xml index c5bb0fe43..e347f9a41 100644 --- a/postgresql/logical-replication.xml +++ b/postgresql/logical-replication.xml @@ -456,14 +456,23 @@ - La réplication est seulement possible pour les tables. Autrement dit, les - tables du côté publication et du côté souscription doivent être des - tables normales, pas des vues, des vues matérialisées, des tables racines - ou des tables externes. Dans le cas des partitions, vous pouvez du coup - répliquer une hiérarchie de partitions une à une, mais vous ne pouvez pas - répliquer vers une configuration différente du partitionnement. Les - tentatives de réplication de tables autre que les tables normales - résulteront en une erreur. + Replication is only supported by tables, including partitioned tables. + Attempts to replicate other types of relations such as views, materialized + views, or foreign tables, will result in an error. + + + + + + When replicating between partitioned tables, the actual replication + originates, by default, from the leaf partitions on the publisher, so + partitions on the publisher must also exist on the subscriber as valid + target tables. (They could either be leaf partitions themselves, or they + could be further subpartitioned, or they could even be independent + tables.) Publications can also specify that changes are to be replicated + using the identity and schema of the partitioned root table instead of + that of the individual leaf partitions in which the changes actually + originate (see ). diff --git a/postgresql/logicaldecoding.xml b/postgresql/logicaldecoding.xml index 56e8a0862..e0137a4c0 100644 --- a/postgresql/logicaldecoding.xml +++ b/postgresql/logicaldecoding.xml @@ -93,9 +93,9 @@ postgres=# SELECT * FROM pg_logical_slot_get_changes('regression_slot', NULL, NU (0 rows) postgres=# BEGIN; -postgres=# INSERT INTO data(data) VALUES('1'); -postgres=# INSERT INTO data(data) VALUES('2'); -postgres=# COMMIT; +postgres=*# INSERT INTO data(data) VALUES('1'); +postgres=*# INSERT INTO data(data) VALUES('2'); +postgres=*# COMMIT; postgres=# SELECT * FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL); lsn | xid | data @@ -415,7 +415,8 @@ CREATE TABLE autre_table_catalogue(data text) WITH (user_catalog_table = true); Toute action amenant à une affectation d'identifiant de transaction est interdite. Cela inclut, entre autres, l'écriture dans des tables, - l'exécution de changements DDL et l'appel à txid_current(). + l'exécution de changements DDL et l'appel à + pg_current_xact_id().
diff --git a/postgresql/ltree.xml b/postgresql/ltree.xml index 35d1a3b27..e8931df43 100644 --- a/postgresql/ltree.xml +++ b/postgresql/ltree.xml @@ -17,6 +17,12 @@ Des fonctionnalités étendues de recherche sont fournies.
+ + This module is considered trusted, that is, it can be + installed by non-superusers who have CREATE privilege + on the current database. + + Définitions @@ -61,7 +67,8 @@ pour la correspondance de valeurs de type ltree. Un mot simple établit une correspondance avec ce label dans un chemin. Le caractère joker (*) est utilisé pour spécifier tout - nombre de labels (niveaux). Par exemple : + nombre de labels (niveaux). These can be joined with dots to form a pattern that + must match the whole label path. Par exemple : foo Correspond au chemin exact foo *.foo.* Correspond à tout chemin contenant le label foo @@ -71,19 +78,26 @@ foo Correspond au chemin exact foo - Les caractères joker peuvent être quantifiés pour restreindre le nombre - de labels de la correspondance : + Les caractères joker et les mots simples peuvent être quantifiés pour + restreindre le nombre de labels de la correspondance : *{n} Correspond à exactement n labels *{n,} Correspond à au moins n labels *{n,m} Correspond à au moins n labels mais à pas plus de m -*{,m} Correspond à au plus m labels — identique à *{0,m} - +*{,m} Match at most m labels — same as *{0,m} +foo{n,m} Match at least n but not more than m occurrences of foo +foo{,} Match any number of occurrences of foo, including zero + + In the absence of any explicit quantifier, the default for a star symbol + is to match any number of labels (that is, {,}) while + the default for a non-star item is to match exactly once (that + is, {1}). + Il existe plusieurs modificateurs qui peuvent être placés à la fin - d'un label sans joker dans un lquery pour que la + d'un élément lquery sans joker pour que la correspondance se fasse sur plus que la correspondance exacte : @ Correspondance sans vérification de casse, par exemple a@ établit une correspondance avec A @@ -102,18 +116,20 @@ foo Correspond au chemin exact foo - De plus, vous pouvez écrire plusieurs labels séparés avec des - | (OR) pour établir une correspondance avec un des - labels, et vous pouvez placer un ! (NOT) au début pour - établir une correspondance avec tout sauf une des différentes - alternatives. + Also, you can write several possibly-modified non-star items separated with + | (OR) to match any of those items, and you can put + ! (NOT) at the start of a non-star group to match any + label that doesn't match any of the alternatives. A quantifier, if any, + goes at the end of the group; it means some number of matches for the + group as a whole (that is, some number of labels matching or not matching + any of the alternatives). Voici un exemple annoté d'une lquery : - Top.*{0,2}.sport*@.!football|tennis.Russ*|Spain - a. b. c. d. e. +Top.*{0,2}.sport*@.!football|tennis{1,}.Russ*|Spain +a. b. c. d. e. Cette requête établira une correspondance avec tout chemin qui : @@ -136,8 +152,8 @@ foo Correspond au chemin exact foo - ensuite un label ne correspondant ni à football ni - à tennis + then has one or more labels, none of which + match football nor tennis @@ -205,190 +221,230 @@ foo Correspond au chemin exact foo Opérateurs <type>ltree</type> - - - - Opérateur - Retour - Description - - - - - - ltree @> ltree - boolean - l'argument gauche est-il un ancêtre de l'argument droit (ou - identique) ? - - - - ltree <@ ltree - boolean - l'argument gauche est-il un descendant de l'argument droit (ou - identique) ? - - - - ltree ~ lquery - boolean - est-ce que ltree établie une correspondance avec - lquery ? - - - - lquery ~ ltree - boolean - est-ce que ltree établie une correspondance avec - lquery ? - - - - ltree ? lquery[] - boolean - est-ce que ltree établie une correspondance avec tout - any lquery dans ce tableau ? - - - - lquery[] ? ltree - boolean - est-ce que ltree établie une correspondance avec tout - lquery dans ce tableau ? - - - - ltree @ ltxtquery - boolean - est-ce que ltree établie une correspondance avec - ltxtquery ? - - - - ltxtquery @ ltree - boolean - est-ce que ltree établie une correspondance avec - ltxtquery ? - - - - ltree || ltree - ltree - concatène des chemins ltree - - - - ltree || text - ltree - convertit du texte en ltree et concatène - - - - text || ltree - ltree - convertit du texte en ltree et concatène - - - - ltree[] @> ltree - boolean - est-ce que le tableau contient un ancêtre de - ltree ? - - - - ltree <@ ltree[] - boolean - est-ce que le tableau contient un ancêtre de - ltree ? - - - - ltree[] <@ ltree - boolean - est-ce que le tableau contient un descendant de - ltree ? - - - - ltree @> ltree[] - boolean - est-ce que le tableau contient un descendant de - ltree ? - - - - ltree[] ~ lquery - boolean - est-ce que le tableau contient tout chemin correspondant à - lquery ? - - - - lquery ~ ltree[] - boolean - est-ce que le tableau contient tout chemin correspondant à - lquery ? - - - - ltree[] ? lquery[] - boolean - est-ce que le tableau ltree contient tout chemin - correspondant à un lquery ? - - - - lquery[] ? ltree[] - boolean - est-ce que le tableau ltree contient tout chemin - correspondant à un lquery ? - - - - ltree[] @ ltxtquery - boolean - est-ce que le tableau contient tout chemin correspondant à - ltxtquery ? - - - - ltxtquery @ ltree[] - boolean - est-ce que le tableau contient tout chemin correspondant à - ltxtquery ? - - - - ltree[] ?@> ltree - ltree - première entrée du tableau ancêtre de - ltree ; NULL si aucun - - - - ltree[] ?<@ ltree - ltree - première entrée du tableau descendant de - ltree ; NULL si aucun - - - - ltree[] ?~ lquery - ltree - première entrée du tableau établissant une correspondance avec - lquery ; NULL si aucune - - - - ltree[] ?@ ltxtquery - ltree - première entrée du tableau établissant une correspondance avec - ltxtquery ; NULL si aucune - - - - + + + + + Opérateur + + + Description + + + + + + + + ltree @> ltree + boolean + + + L'argument gauche est-il un ancêtre de l'argument droit (ou + identique) ? + + + + + + ltree <@ ltree + boolean + + + L'argument gauche est-il un descendant de l'argument droit (ou + identique) ? + + + + + + ltree ~ lquery + boolean + + + lquery ~ ltree + boolean + + + Est-ce que ltree établie une correspondance avec + lquery ?? + + + + + + ltree ? lquery[] + boolean + + + lquery[] ? ltree + boolean + + + Est-ce que ltree établie une correspondance avec au moins un + lquery dans ce tableau ? + + + + + + ltree @ ltxtquery + boolean + + + ltxtquery @ ltree + boolean + + + Est-ce que ltree établie une correspondance avec + ltxtquery ? + + + + + + ltree || ltree + ltree + + + Concatène des chemins ltree. + + + + + + ltree || text + ltree + + + text || ltree + ltree + + + Convertit du texte en ltree et concatène. + + + + + + ltree[] @> ltree + boolean + + + ltree <@ ltree[] + boolean + + + Est-ce que le tableau contient un ancêtre de + ltree ? + + + + + + ltree[] <@ ltree + boolean + + + ltree @> ltree[] + boolean + + + Est-ce que le tableau contient un descendant de + ltree ?? + + + + + + ltree[] ~ lquery + boolean + + + lquery ~ ltree[] + boolean + + + Est-ce que le tableau contient au moins un chemin correspondant à + lquery ?? + + + + + + ltree[] ? lquery[] + boolean + + + lquery[] ? ltree[] + boolean + + + Est-ce que le tableau ltree contient au moins un chemin + correspondant à un lquery ? + + + + + + ltree[] @ ltxtquery + boolean + + + ltxtquery @ ltree[] + boolean + + + Est-ce que le tableau contient au moins un chemin correspondant à + ltxtquery ?? + + + + + + ltree[] ?@> ltree + ltree + + + Renvoie la première entrée du tableau ancêtre de + ltree ou NULL sinon. + + + + + + ltree[] ?<@ ltree + ltree + + + Renvoie la première entrée du tableau qui est un descendant de + ltree ou NULL sinon. + + + + + + ltree[] ?~ lquery + ltree + + + Renvoie la première entrée du tableau établissant une correspondance avec + lquery et NULL sinon. + + + + + + ltree[] ?@ ltxtquery + ltree + + + Renvoie la première entrée du tableau établissant une correspondance avec + ltxtquery et NULL sinon. + + + + @@ -407,114 +463,178 @@ foo Correspond au chemin exact foo Fonctions <type>ltree</type> - - - - Fonction - Type en retour - Description - Exemple - Résultat - - - - - - subltree(ltree, int start, int end)subltree - ltree - sous-chemin de of ltree de la position - start à la position - end-1 (counting from 0) - subltree('Top.Child1.Child2',1,2) - Child1 - - - - subpath(ltree, int offset, int len)subpath - ltree - sous-chemin de ltree commençant à la position - offset, de longueur len. - Si offset est négatif, le sous-chemin commence - de ce nombre à partir de la fin du chemin. Si len - est négatif, laisse ce nombre de labels depuis la fin du chemin. - subpath('Top.Child1.Child2',0,2) - Top.Child1 - - - - subpath(ltree, int offset) - ltree - sous-chemin de ltree commençant à la position - offset, s'étendant à la fin du chemin. Si - offset est négatif, le sous-chemin commence de - ce point jusqu'à la fin du chemin. - subpath('Top.Child1.Child2',1) - Child1.Child2 - - - - nlevel(ltree)nlevel - integer - nombre de labels dans le chemin - nlevel('Top.Child1.Child2') - 3 - - - - index(ltree a, ltree b)index - integer - position de la première occurrence de b - dans a ; -1 si introuvable - index('0.1.2.3.5.4.5.6.8.5.6.8','5.6') - 6 - - - - index(ltree a, ltree b, int offset) - integer - position de la première occurrence de b - dans a, la recherche commence à - offset ; un offset - négatif signifie un commencement à -offset labels - de la fin du chemin - index('0.1.2.3.5.4.5.6.8.5.6.8','5.6',-4) - 9 - - - - text2ltree(text)text2ltree - ltree - convertit du text en ltree - - - - - - ltree2text(ltree)ltree2text - text - convertit du ltree en text - - - - - - lca(ltree, ltree, ...)lca - ltree - plus long ancêtre commun des chemins (jusqu'à huit arguments supportés) - lca('1.2.3','1.2.3.4.5.6') - 1.2 - - - - lca(ltree[]) - ltree - plus long ancêtre commun des chemins dans le tableau - lca(array['1.2.3'::ltree,'1.2.3.4']) - 1.2 - - - - + + + + + Function + + + Description + + + Example(s) + + + + + + + + subltree + subltree ( ltree, start integer, end integer ) + ltree + + + Returns subpath of ltree from + position start to + position end-1 (counting from 0). + + + subltree('Top.Child1.Child2',1,2) + Child1 + + + + + + subpath + subpath ( ltree, offset integer, len integer ) + ltree + + + Returns subpath of ltree starting at + position offset, with + length len. If offset + is negative, subpath starts that far from the end of the path. + If len is negative, leaves that many labels off + the end of the path. + + + subpath('Top.Child1.Child2',0,2) + Top.Child1 + + + + + + subpath ( ltree, offset integer ) + ltree + + + Returns subpath of ltree starting at + position offset, extending to end of path. + If offset is negative, subpath starts that far + from the end of the path. + + + subpath('Top.Child1.Child2',1) + Child1.Child2 + + + + + + nlevel + nlevel ( ltree ) + integer + + + Returns number of labels in path. + + + nlevel('Top.Child1.Child2') + 3 + + + + + + index + index ( a ltree, b ltree ) + integer + + + Returns position of first occurrence of b in + a, or -1 if not found. + + + index('0.1.2.3.5.4.5.6.8.5.6.8','5.6') + 6 + + + + + + index ( a ltree, b ltree, offset integer ) + integer + + + Returns position of first occurrence of b + in a, or -1 if not found. The search starts at + position offset; + negative offset means + start -offset labels from the end of the path. + + + index('0.1.2.3.5.4.5.6.8.5.6.8','5.6',-4) + 9 + + + + + + text2ltree + text2ltree ( text ) + ltree + + + Casts text to ltree. + + + + + + ltree2text + ltree2text ( ltree ) + text + + + Casts ltree to text. + + + + + + lca + lca ( ltree , ltree , ... ) + ltree + + + Computes longest common ancestor of paths + (up to 8 arguments are supported). + + + lca('1.2.3','1.2.3.4.5.6') + 1.2 + + + + + + lca ( ltree[] ) + ltree + + + Computes longest common ancestor of paths in array. + + + lca(array['1.2.3'::ltree,'1.2.3.4']) + 1.2 + + + + @@ -535,27 +655,50 @@ foo Correspond au chemin exact foo - Index GiST sur ltree : + Index GiST sur ltree (gist_ltree_ops + opclass) : <, <=, =, >=, >, @>, <@, @, ~, ? - Exemple de la création d'un tel index : + gist_ltree_ops GiST opclass approximates a set of + path labels as a bitmap signature. Its optional integer parameter + siglen determines the + signature length in bytes. The default signature length is 8 bytes. + Valid values of signature length are between 1 and 2024 bytes. Longer + signatures lead to a more precise search (scanning a smaller fraction of the index and + fewer heap pages), at the cost of a larger index. + + + Example of creating such an index with the default signature length of 8 bytes: CREATE INDEX path_gist_idx ON test USING GIST (path); + + + Example of creating such an index with a signature length of 100 bytes: + + +CREATE INDEX path_gist_idx ON test USING GIST (path gist_ltree_ops(siglen=100)); - Index GiST sur ltree[] : + Index GiST sur ltree[] (gist__ltree_ops + opclass) : ltree[] <@ ltree, ltree @> ltree[], @, ~, ? - Exemple de la création d'un tel index : + gist__ltree_ops GiST opclass works similarly to + gist_ltree_ops and also takes signature length as + a parameter. The default value of siglen in + gist__ltree_ops is 28 bytes. + + + Example of creating such an index with the default signature length of 28 bytes: CREATE INDEX path_gist_idx ON test USING GIST (array_path); @@ -643,7 +786,7 @@ ltreetest=> SELECT path FROM test WHERE path ~ '*.Astronomy.*'; Top.Collections.Pictures.Astronomy.Astronauts (7 rows) -ltreetest=> SELECT path FROM test WHERE path ~ '*.!pictures@.*.Astronomy.*'; +ltreetest=> SELECT path FROM test WHERE path ~ '*.!pictures@.Astronomy.*'; path ------------------------------------ Top.Science.Astronomy diff --git a/postgresql/maintenance.xml b/postgresql/maintenance.xml index 0356b0dad..63e28eb5c 100644 --- a/postgresql/maintenance.xml +++ b/postgresql/maintenance.xml @@ -840,14 +840,33 @@ HINT: Stop the postmaster and vacuum that database in single-user mode. et le nombre de lignes est pg_class.reltuples. - Le nombre de lignes obsolètes est obtenu à partir du récupérateur de - statistiques ; c'est un nombre à peu près précis, mis à jour après - chaque instruction UPDATE et DELETE - (il est seulement à peu près précis car certaines informations pourraient - être perdues en cas de grosse charge). Si la valeur de - relfrozenxid pour la table est supérieure à - vacuum_freeze_table_age, un VACUUM agressif est exécuté - pour geler les anciennes lignes et pour avancer + + + + The table is also vacuumed if the number of tuples inserted since the last + vacuum has exceeded the defined insert threshold, which is defined as: + +vacuum insert threshold = vacuum base insert threshold + vacuum insert scale factor * number of tuples + + where the vacuum insert base threshold is + , + and vacuum insert scale factor is + . + Such vacuums may allow portions of the table to be marked as + all visible and also allow tuples to be frozen, which + can reduce the work required in subsequent vacuums. + For tables which receive INSERT operations but no or + almost no UPDATE/DELETE operations, + it may be beneficial to lower the table's + as this may allow + tuples to be frozen by earlier vacuums. The number of obsolete tuples and + the number of inserted tuples are obtained from the statistics collector; + it is a semi-accurate count updated by each UPDATE, + DELETE and INSERT operation. (It is + only semi-accurate because some information might be lost under heavy + load.) If the relfrozenxid value of the table + is more than vacuum_freeze_table_age transactions old, + an aggressive vacuum is performed to freeze old tuples and advance relfrozenxid, sinon seules les pages qui ont été modifiées depuis le dernier VACUUM sont parcourues par l'opération de VACUUM. @@ -872,8 +891,7 @@ HINT: Stop the postmaster and vacuum that database in single-user mode. paramètres de contrôle de l'autovacuum) sont pris dans postgresql.conf, mais il est possible de les surcharger table par table ; voir - pour plus d'informations. + pour plus d'informations. diff --git a/postgresql/manage-ag.xml b/postgresql/manage-ag.xml index 088cf82f3..79c69d5fd 100644 --- a/postgresql/manage-ag.xml +++ b/postgresql/manage-ag.xml @@ -203,7 +203,9 @@ créé. En indiquant à CREATE DATABASE de copier template0 au lieu de template1, vous pouvez créer une base de - données utilisateur vierge qui ne contient aucun des + données utilisateur vierge (one where no user-defined objects + exist and where the system + objects have not been altered) qui ne contient aucun des ajouts locaux à template1. Ceci est particulièrement pratique quand on restaure une sauvegarde réalisé avec pg_dump : le script de dump devrait être restauré dans une base de données diff --git a/postgresql/mvcc.xml b/postgresql/mvcc.xml index 450589840..779079444 100644 --- a/postgresql/mvcc.xml +++ b/postgresql/mvcc.xml @@ -1086,28 +1086,35 @@ ERREUR: n'a pas pu sérialiser un accès à cause d'une mise à jour en parall Modes de verrou conflictuels - - - + + + + + + + + + + Verrou demandé - Verrou déjà détenu + Mode verrou existant - ACCESS SHARE - ROW SHARE - ROW EXCLUSIVE - SHARE UPDATE EXCLUSIVE - SHARE - SHARE ROW EXCLUSIVE - EXCLUSIVE - ACCESS EXCLUSIVE + ACCESS SHARE + ROW SHARE + ROW EXCL. + SHARE UPDATE EXCL. + SHARE + SHARE ROW EXCL. + EXCL. + ACCESS EXCL. - ACCESS SHARE + ACCESS SHARE @@ -1118,7 +1125,7 @@ ERREUR: n'a pas pu sérialiser un accès à cause d'une mise à jour en parall X - ROW SHARE + ROW SHARE @@ -1129,7 +1136,7 @@ ERREUR: n'a pas pu sérialiser un accès à cause d'une mise à jour en parall X - ROW EXCLUSIVE + ROW EXCLUSIVE @@ -1140,7 +1147,7 @@ ERREUR: n'a pas pu sérialiser un accès à cause d'une mise à jour en parall X - SHARE UPDATE EXCLUSIVE + SHARE UPDATE EXCLUSIVE @@ -1151,7 +1158,7 @@ ERREUR: n'a pas pu sérialiser un accès à cause d'une mise à jour en parall X - SHARE + SHARE X @@ -1162,7 +1169,7 @@ ERREUR: n'a pas pu sérialiser un accès à cause d'une mise à jour en parall X - SHARE ROW EXCLUSIVE + SHARE ROW EXCLUSIVE X @@ -1173,7 +1180,7 @@ ERREUR: n'a pas pu sérialiser un accès à cause d'une mise à jour en parall X - EXCLUSIVE + EXCLUSIVE X X @@ -1184,7 +1191,7 @@ ERREUR: n'a pas pu sérialiser un accès à cause d'une mise à jour en parall X - ACCESS EXCLUSIVE + ACCESS EXCLUSIVE X X X @@ -1322,8 +1329,11 @@ ERREUR: n'a pas pu sérialiser un accès à cause d'une mise à jour en parall
Verrous en conflit au niveau ligne - - + + + + + diff --git a/postgresql/oid2name.xml b/postgresql/oid2name.xml index 1c79ec85c..9ce8cd35e 100644 --- a/postgresql/oid2name.xml +++ b/postgresql/oid2name.xml @@ -233,6 +233,13 @@ variables d'environnement supportées par libpq (voir ). + + + The environment variable PG_COLOR specifies whether to use + color in diagnostic messages. Possible values are + always, auto and + never. + diff --git a/postgresql/pageinspect.xml b/postgresql/pageinspect.xml index 2eb1c4c27..5e963ddd5 100644 --- a/postgresql/pageinspect.xml +++ b/postgresql/pageinspect.xml @@ -234,6 +234,11 @@ test=# SELECT * FROM heap_page_items(get_raw_page('pg_class', 0)); src/include/access/htup_details.h pour des explications sur les champs renvoyés. + + The heap_tuple_infomask_flags function can be + used to unpack the flag bits of t_infomask + and t_infomask2 for heap tuples. + @@ -286,6 +291,42 @@ test=# SELECT * FROM heap_page_item_attrs(get_raw_page('pg_class', 0), 'pg_class + + + + heap_tuple_infomask_flags(t_infomask integer, t_infomask2 integer) returns record + + heap_tuple_infomask_flags + + + + + heap_tuple_infomask_flags decodes the + t_infomask and + t_infomask2 returned by + heap_page_items into a human-readable + set of arrays made of flag names, with one column for all + the flags and one column for combined flags. For example: + +test=# SELECT t_ctid, raw_flags, combined_flags + FROM heap_page_items(get_raw_page('pg_class', 0)), + LATERAL heap_tuple_infomask_flags(t_infomask, t_infomask2) + WHERE t_infomask IS NOT NULL OR t_infomask2 IS NOT NULL; + + This function should be called with the same arguments as the return + attributes of heap_page_items. + + + Combined flags are displayed for source-level macros that take into + account the value of more than one raw bit, such as + HEAP_XMIN_FROZEN. + + + See src/include/access/htup_details.h for + explanations of the flag names returned. + + + @@ -311,13 +352,14 @@ test=# SELECT * FROM heap_page_item_attrs(get_raw_page('pg_class', 0), 'pg_class test=# SELECT * FROM bt_metap('pg_cast_oid_index'); -[ RECORD 1 ]-----------+------- magic | 340322 -version | 3 +version | 4 root | 1 level | 0 fastroot | 1 fastlevel | 0 oldest_xact | 582 last_cleanup_num_tuples | 1000 +allequalimage | f @@ -340,11 +382,11 @@ test=# SELECT * FROM bt_page_stats('pg_cast_oid_index', 1); -[ RECORD 1 ]-+----- blkno | 1 type | l -live_items | 256 +live_items | 224 dead_items | 0 -avg_item_size | 12 +avg_item_size | 16 page_size | 8192 -free_size | 4056 +free_size | 3668 btpo_prev | 0 btpo_next | 0 btpo | 0 @@ -367,24 +409,57 @@ btpo_flags | 3 sur tous les éléments d'une page d'index btree. Par exemple : -test=# SELECT * FROM bt_page_items('pg_cast_oid_index', 1); - itemoffset | ctid | itemlen | nulls | vars | data -------------+---------+---------+-------+------+------------- - 1 | (0,1) | 12 | f | f | 23 27 00 00 - 2 | (0,2) | 12 | f | f | 24 27 00 00 - 3 | (0,3) | 12 | f | f | 25 27 00 00 - 4 | (0,4) | 12 | f | f | 26 27 00 00 - 5 | (0,5) | 12 | f | f | 27 27 00 00 - 6 | (0,6) | 12 | f | f | 28 27 00 00 - 7 | (0,7) | 12 | f | f | 29 27 00 00 - 8 | (0,8) | 12 | f | f | 2a 27 00 00 +test=# SELECT itemoffset, ctid, itemlen, nulls, vars, data, dead, htid, tids[0:2] AS some_tids + FROM bt_page_items('tenk2_hundred', 5); + itemoffset | ctid | itemlen | nulls | vars | data | dead | htid | some_tids +------------+-----------+---------+-------+------+-------------------------+------+--------+--------------------- + 1 | (16,1) | 16 | f | f | 30 00 00 00 00 00 00 00 | | | + 2 | (16,8292) | 616 | f | f | 24 00 00 00 00 00 00 00 | f | (1,6) | {"(1,6)","(10,22)"} + 3 | (16,8292) | 616 | f | f | 25 00 00 00 00 00 00 00 | f | (1,18) | {"(1,18)","(4,22)"} + 4 | (16,8292) | 616 | f | f | 26 00 00 00 00 00 00 00 | f | (4,18) | {"(4,18)","(6,17)"} + 5 | (16,8292) | 616 | f | f | 27 00 00 00 00 00 00 00 | f | (1,2) | {"(1,2)","(1,19)"} + 6 | (16,8292) | 616 | f | f | 28 00 00 00 00 00 00 00 | f | (2,24) | {"(2,24)","(4,11)"} + 7 | (16,8292) | 616 | f | f | 29 00 00 00 00 00 00 00 | f | (2,17) | {"(2,17)","(11,2)"} + 8 | (16,8292) | 616 | f | f | 2a 00 00 00 00 00 00 00 | f | (0,25) | {"(0,25)","(3,20)"} + 9 | (16,8292) | 616 | f | f | 2b 00 00 00 00 00 00 00 | f | (0,10) | {"(0,10)","(0,14)"} + 10 | (16,8292) | 616 | f | f | 2c 00 00 00 00 00 00 00 | f | (1,3) | {"(1,3)","(3,9)"} + 11 | (16,8292) | 616 | f | f | 2d 00 00 00 00 00 00 00 | f | (6,28) | {"(6,28)","(11,1)"} + 12 | (16,8292) | 616 | f | f | 2e 00 00 00 00 00 00 00 | f | (0,27) | {"(0,27)","(1,13)"} + 13 | (16,8292) | 616 | f | f | 2f 00 00 00 00 00 00 00 | f | (4,17) | {"(4,17)","(4,21)"} +(13 rows) - Dans un bloc feuille d'un index B-tree, ctid - pointe vers un enregistrement de la table. Dans une page interne, la - partie du numéro de bloc du ctid pointe vers - une autre page de l'index lui-même alors que la partie décalage (le - deuxième nombre) est ignoré et vaut généralement 1. + This is a B-tree leaf page. All tuples that point to the table + happen to be posting list tuples (all of which store a total of + 100 6 byte TIDs). There is also a high key tuple + at itemoffset number 1. + ctid is used to store encoded + information about each tuple in this example, though leaf page + tuples often store a heap TID directly in the + ctid field instead. + tids is the list of TIDs stored as a + posting list. + + + In an internal page (not shown), the block number part of + ctid is a downlink, + which is a block number of another page in the index itself. + The offset part (the second number) of + ctid stores encoded information about + the tuple, such as the number of columns present (suffix + truncation may have removed unneeded suffix columns). Truncated + columns are treated as having the value minus + infinity. + + + htid shows a heap TID for the tuple, + regardless of the underlying tuple representation. This value + may match ctid, or may be decoded + from the alternative representations used by posting list tuples + and tuples from internal pages. Tuples in internal pages + usually have the implementation level heap TID column truncated + away, which is represented as a NULL + htid value. Notez que le premier élément une page (autre que la dernière, toute page @@ -392,13 +467,19 @@ test=# SELECT * FROM bt_page_items('pg_cast_oid_index', 1); btpo_next) est la clé haute du bloc, ce qui signifie que ces données (data) serve comme limite haute de tous les éléments apparaissant sur la page, - alors que son champ ctid n'a aucune - signification. De plus, sur les blocs qui ne sont pas des feuilles, le - premier élément contenant de vraies données (autrement dit le premier - élément qui n'est pas une clé haute) est un élément moins - infinité sans valeur réelle dans son champ - data. Néanmoins, un tel élément doit avoir un - lien valide dans son champ ctid. + alors que its ctid field does not point to + another block. Also, on internal pages, the first real data + item (the first item that is not a high key) reliably has every + column truncated away, leaving no actual value in its + data field. Such an item does have a + valid downlink in its ctid field, + however. + + + For more details about the structure of B-tree indexes, see + . For more details about + deduplication and posting lists, see . @@ -419,17 +500,24 @@ test=# SELECT * FROM bt_page_items('pg_cast_oid_index', 1); get_raw_page devrait être passé en argument. Ainsi le précédent exemple pourrait également être réécrit ainsi : -test=# SELECT * FROM bt_page_items(get_raw_page('pg_cast_oid_index', 1)); - itemoffset | ctid | itemlen | nulls | vars | data -------------+---------+---------+-------+------+------------- - 1 | (0,1) | 12 | f | f | 23 27 00 00 - 2 | (0,2) | 12 | f | f | 24 27 00 00 - 3 | (0,3) | 12 | f | f | 25 27 00 00 - 4 | (0,4) | 12 | f | f | 26 27 00 00 - 5 | (0,5) | 12 | f | f | 27 27 00 00 - 6 | (0,6) | 12 | f | f | 28 27 00 00 - 7 | (0,7) | 12 | f | f | 29 27 00 00 - 8 | (0,8) | 12 | f | f | 2a 27 00 00 +test=# SELECT itemoffset, ctid, itemlen, nulls, vars, data, dead, htid, tids[0:2] AS some_tids + FROM bt_page_items(get_raw_page('tenk2_hundred', 5)); + itemoffset | ctid | itemlen | nulls | vars | data | dead | htid | some_tids +------------+-----------+---------+-------+------+-------------------------+------+--------+--------------------- + 1 | (16,1) | 16 | f | f | 30 00 00 00 00 00 00 00 | | | + 2 | (16,8292) | 616 | f | f | 24 00 00 00 00 00 00 00 | f | (1,6) | {"(1,6)","(10,22)"} + 3 | (16,8292) | 616 | f | f | 25 00 00 00 00 00 00 00 | f | (1,18) | {"(1,18)","(4,22)"} + 4 | (16,8292) | 616 | f | f | 26 00 00 00 00 00 00 00 | f | (4,18) | {"(4,18)","(6,17)"} + 5 | (16,8292) | 616 | f | f | 27 00 00 00 00 00 00 00 | f | (1,2) | {"(1,2)","(1,19)"} + 6 | (16,8292) | 616 | f | f | 28 00 00 00 00 00 00 00 | f | (2,24) | {"(2,24)","(4,11)"} + 7 | (16,8292) | 616 | f | f | 29 00 00 00 00 00 00 00 | f | (2,17) | {"(2,17)","(11,2)"} + 8 | (16,8292) | 616 | f | f | 2a 00 00 00 00 00 00 00 | f | (0,25) | {"(0,25)","(3,20)"} + 9 | (16,8292) | 616 | f | f | 2b 00 00 00 00 00 00 00 | f | (0,10) | {"(0,10)","(0,14)"} + 10 | (16,8292) | 616 | f | f | 2c 00 00 00 00 00 00 00 | f | (1,3) | {"(1,3)","(3,9)"} + 11 | (16,8292) | 616 | f | f | 2d 00 00 00 00 00 00 00 | f | (6,28) | {"(6,28)","(11,1)"} + 12 | (16,8292) | 616 | f | f | 2e 00 00 00 00 00 00 00 | f | (0,27) | {"(0,27)","(1,13)"} + 13 | (16,8292) | 616 | f | f | 2f 00 00 00 00 00 00 00 | f | (4,17) | {"(4,17)","(4,21)"} +(13 rows) Tous les autres étails sont les même qu'expliqué au point précédent. diff --git a/postgresql/perform.xml b/postgresql/perform.xml index b58559fa9..3ff154326 100644 --- a/postgresql/perform.xml +++ b/postgresql/perform.xml @@ -340,7 +340,47 @@ EXPLAIN SELECT * FROM tenk1 WHERE unique1 = 42; requêtes qui ne récupèrent qu'une seule ligne, ou pour les requêtes qui ont une condition ORDER BY qui correspond à l'ordre de l'index, car cela ne nécessite aucune étape supplémentaire pour satisfaire - l'ORDER BY. + l'ORDER BY. In this example, adding + ORDER BY unique1 would use the same plan because the + index already implicitly provides the requested ordering. + + + + The planner may implement an ORDER BY clause in several + ways. The above example shows that such an ordering clause may be + implemented implicitly. The planner may also add an explicit + sort step: + + +EXPLAIN SELECT * FROM tenk1 ORDER BY unique1; + QUERY PLAN +------------------------------------------------------------------- + Sort (cost=1109.39..1134.39 rows=10000 width=244) + Sort Key: unique1 + -> Seq Scan on tenk1 (cost=0.00..445.00 rows=10000 width=244) + + + If a part of the plan guarantees an ordering on a prefix of the + required sort keys, then the planner may instead decide to use an + incremental sort step: + + +EXPLAIN SELECT * FROM tenk1 ORDER BY four, ten LIMIT 100; + QUERY PLAN +-------------------------------------------------------------------&zwsp;----------------------------------- + Limit (cost=521.06..538.05 rows=100 width=244) + -> Incremental Sort (cost=521.06..2220.95 rows=10000 width=244) + Sort Key: four, ten + Presorted Key: four + -> Index Scan using index_tenk1_on_four on tenk1 (cost=0.29..1510.08 rows=10000 width=244) + + + Compared to regular sorts, sorting incrementally allows returning tuples + before the entire result set has been sorted, which particularly enables + optimizations with LIMIT queries. It may also reduce + memory usage and the likelihood of spilling sorts to disk, but it comes at + the cost of the increased overhead of splitting the result set into multiple + sorting batches. @@ -1259,7 +1299,8 @@ SELECT stxname, stxkeys, stxddependencies Les dépendances fonctionnelles sont pour le moment uniquement appliquées pour les conditions sur une simple égalité entre une colonne et une - valeur constante. Elles ne sont pas utilisées pour améliorer + valeur constante and IN clauses with constant values. + Elles ne sont pas utilisées pour améliorer l'estimation sur les conditions d'égalité entre deux colonnes ou la comparaison d'une colonne avec une expression ni pour les clauses d'intervalle, LIKE ou tout autre type de condition. @@ -1671,9 +1712,9 @@ WHERE quelquechosedautre; transactions ne sont pas impactés, car, en cas d'erreur, les fichiers contenant les données nouvellement chargées seront supprimés de toute façon. Néanmoins, cette considération ne s'applique que quand vaut minimal pour les tables - non partitionnées, car toutes les commandes doivent écrire dans les - journaux de transaction dans les autres cas. + linkend="guc-wal-level"/> vaut minimal car toutes les + commandes doivent écrire dans les journaux de transaction dans les autres + cas. @@ -1784,41 +1825,13 @@ WHERE quelquechosedautre; En dehors d'éviter le temps de traitement des données des journaux de transactions par l'archiveur ou l'émetteur des journaux de transactions, - le faire rendrait certaines commandes plus rapides parce qu'elles sont - conçues pour ne pas écrire du tout dans les journaux de transactions si - wal_level vaut minimal. (Elles - peuvent garantir la sûreté des données de façon moins coûteuse en exécutant - un fsync à la fin plutôt qu'en écrivant les journaux - de transactions : - - - - CREATE TABLE AS SELECT - - - - - CREATE INDEX (et les variantes telles que - ALTER TABLE ADD PRIMARY KEY) - - - - - ALTER TABLE SET TABLESPACE - - - - - CLUSTER - - - - - COPY FROM, quand la table cible vient d'être créée - ou vidée auparavant dans la transaction - - - + le faire rendrait certaines commandes plus rapides parce qu'elles + n'écrivent pas du tout dans les journaux de transactions si + wal_level vaut minimal and the + current subtransaction (or top-level transaction) created or truncated the + table or index they change. (Elles peuvent garantir la sûreté des données + de façon moins coûteuse en exécutant un fsync à la + fin plutôt qu'en écrivant les journaux de transactions). diff --git a/postgresql/pgbuffercache.xml b/postgresql/pgbuffercache.xml index 8de597281..22f7746ee 100644 --- a/postgresql/pgbuffercache.xml +++ b/postgresql/pgbuffercache.xml @@ -44,79 +44,102 @@
Colonnes de <structname>pg_buffercache</structname> - + - Nom - Type - Références - Description + + Type de la colonne + + + Description + - + - bufferid - integer - - ID, qui va de 1 à shared_buffers + + bufferid integer + + + ID, qui va de 1 à shared_buffers + - relfilenode - oid - pg_class.relfilenode - Numéro filenode de la relation + + relfilenode oid + (references pg_class.relfilenode) + + + Numéro filenode de la relation + - reltablespace - oid - pg_tablespace.oid - OID du tablespace de la relation + + reltablespace oid + (references pg_tablespace.oid) + + + OID du tablespace de la relation + - reldatabase - oid - pg_database.oid - OID de la base de données de la relation + + reldatabase oid + (references pg_database.oid) + + + OID de la base de données de la relation + - relforknumber - smallint - - Numéro du fork dans la relation ; voir - include/common/relpath.h + + relforknumber smallint + + + Numéro du fork dans la relation ; voir + include/common/relpath.h + - relblocknumber - bigint - - Numéro de page dans la relation + + relblocknumber bigint + + + Numéro de page dans la relation + - isdirty - boolean - - Page modifiée ? + + isdirty boolean + + + Page modifiée ? + - usagecount - smallint - - Compteur d'accès clock-sweep + + usagecount smallint + + + Compteur d'accès clock-sweep + - pinning_backends - integer - - Nombre de processus serveur en accès sur ce bloc + + pinning_backends integer + + + Nombre de processus serveur en accès sur ce bloc + diff --git a/postgresql/pgcrypto.xml b/postgresql/pgcrypto.xml index 3baef18a6..a472938f9 100644 --- a/postgresql/pgcrypto.xml +++ b/postgresql/pgcrypto.xml @@ -21,6 +21,12 @@ cryptographie pour PostgreSQL. + + This module is considered trusted, that is, it can be + installed by non-superusers who have CREATE privilege + on the current database. + + Fonctions de hachage généralistes @@ -1176,7 +1182,8 @@ S'applique à : pgp_sym_encrypt, seulement avec s2k-mode=3 gen_random_uuid() returns uuid - Retourne un UUID de version 4 (aléatoire). + Retourne un UUID de version 4 (aléatoire). (Obsolete, this function is now also + included in core PostgreSQL.) diff --git a/postgresql/pgstatstatements.xml b/postgresql/pgstatstatements.xml index 63604c8b7..64c7c58f2 100644 --- a/postgresql/pgstatstatements.xml +++ b/postgresql/pgstatstatements.xml @@ -13,8 +13,8 @@ Le module pg_stat_statements fournit un moyen de - surveiller les statistiques d'exécution de tous les ordres SQL exécutés par - un serveur. + surveiller les statistiques d'optimisation et d'exécution de tous les ordres + SQL exécutés par un serveur. @@ -52,199 +52,310 @@
Colonnes de <structname>pg_stat_statements</structname> - + - Nom - Type - Référence - Description + + Type de colonne + + + Description + + + + + userid oid + (references pg_authid.oid) + + + OID of user who executed the statement + + + + + + dbid oid + (references pg_database.oid) + + + OID of database in which the statement was executed + + + + + + queryid bigint + + + Internal hash code, computed from the statement's parse tree + + + + + + query text + + + Text of a representative statement + + + + + + plans bigint + + + Number of times the statement was planned + + + + + + total_plan_time double precision + + + Total time spent planning the statement, in milliseconds + + + + + + min_plan_time double precision + + + Minimum time spent planning the statement, in milliseconds + + + + + + max_plan_time double precision + + + Maximum time spent planning the statement, in milliseconds + + + - userid - oid - pg_authid.oid - OID de l'utilisateur qui a exécuté l'ordre SQL + + mean_plan_time double precision + + + Mean time spent planning the statement, in milliseconds + - dbid - oid - pg_database.oid - - OID de la base de données dans laquelle l'ordre SQL a été exécuté - + + stddev_plan_time double precision + + + Population standard deviation of time spent planning the statement, in milliseconds + - queryid - bigint - - - Code de hachage interne, calculé à partir de l'arbre d'analyse de la - requête. - + + calls bigint + + + Number of times the statement was executed + - query - text - - Texte de l'ordre SQL représentatif + + total_exec_time double precision + + + Total time spent executing the statement, in milliseconds + - calls - bigint - - Nombre d'exécutions + + min_exec_time double precision + + + Minimum time spent executing the statement, in milliseconds + - total_time - double precision - - Durée d'exécution de l'instruction SQL, en millisecondes + + max_exec_time double precision + + + Maximum time spent executing the statement, in milliseconds + - min_time - double precision - - Durée minimum d'exécution de l'instruction SQL, en millisecondes + + mean_exec_time double precision + + + Mean time spent executing the statement, in milliseconds + - max_time - double precision - - Durée maximum d'exécution de l'instruction SQL, en millisecondes + + stddev_exec_time double precision + + + Population standard deviation of time spent executing the statement, in milliseconds + - mean_time - double precision - - Durée moyenne d'exécution de l'instruction SQL, en millisecondes + + rows bigint + + + Total number of rows retrieved or affected by the statement + - stddev_time - double precision - - - Déviation standard de la durée d'exécution de l'instruction SQL, en - millisecondes - + + shared_blks_hit bigint + + + Total number of shared block cache hits by the statement + - rows - bigint - - Nombre total de lignes renvoyées ou affectées par l'ordre SQL + + shared_blks_read bigint + + + Total number of shared blocks read by the statement + - shared_blks_hit - bigint - - Nombre total de blocs partagés lus dans le cache par l'ordre - SQL + + shared_blks_dirtied bigint + + + Total number of shared blocks dirtied by the statement + - shared_blks_read - bigint - - Nombre total de blocs partagés lus sur disque par l'ordre - SQL + + shared_blks_written bigint + + + Total number of shared blocks written by the statement + - shared_blks_dirtied - bigint - - Nombre total de blocs partagés mis à jour par l'ordre SQL + + local_blks_hit bigint + + + Total number of local block cache hits by the statement + - shared_blks_written - bigint - - Nombre total de blocs partagés écrits sur disque par l'ordre - SQL + + local_blks_read bigint + + + Total number of local blocks read by the statement + - local_blks_hit - bigint - - Nombre total de blocs locaux lus dans le cache par l'ordre - SQL + + local_blks_dirtied bigint + + + Total number of local blocks dirtied by the statement + - local_blks_read - bigint - - Nombre total de blocs locaux lus sur disque par l'ordre - SQL + + local_blks_written bigint + + + Total number of local blocks written by the statement + - local_blks_dirtied - bigint - - Nombre total de blocs locaux mis à jour par l'ordre SQL. + + temp_blks_read bigint + + + Total number of temp blocks read by the statement + - local_blks_written - bigint - - Nombre total de blocs locaux écrits sur disque par l'ordre - SQL + + temp_blks_written bigint + + + Total number of temp blocks written by the statement + - temp_blks_read - bigint - - Nombre total de blocs temporaires lus par l'ordre SQL + + blk_read_time double precision + + + Total time the statement spent reading blocks, in milliseconds + (if is enabled, otherwise zero) + - temp_blks_written - bigint - - Nombre total de blocs temporaires écrits par l'ordre SQL + + blk_write_time double precision + + + Total time the statement spent writing blocks, in milliseconds + (if is enabled, otherwise zero) + - blk_read_time - double precision - - - Durée totale du temps passé par l'ordre SQL à lire des blocs, en - millisecondes (si est activé, - sinon zéro) - + + wal_records bigint + + + Total number of WAL records generated by the statement + - blk_write_time - double precision - - - Durée totale du temps passé par l'ordre SQL à écrire des blocs sur - disque, en millisecondes (si est - activé, sinon zéro) - + + wal_fpi bigint + + + Total number of WAL full page images generated by the statement + + + + wal_bytes numeric + + + Total amount of WAL bytes generated by the statement + +
@@ -359,6 +470,16 @@ paramètre pg_stat_statements.max pour empêcher que cela ne recommence.
+ + + plans and calls aren't + always expected to match because planning and execution statistics are + updated at their respective end phase, and only for successful operations. + For example, if a statement is successfully planned but fails during + the execution phase, only its planning statistics will be updated. + If planning is skipped because a cached plan is used, only its execution + statistics will be updated. +
@@ -485,6 +606,21 @@ + + + pg_stat_statements.track_planning (boolean) + + + + + pg_stat_statements.track_planning controls whether + planning operations and duration are tracked by the module. + The default value is on. + Only superusers can change this setting. + + + + pg_stat_statements.save (boolean) @@ -536,92 +672,98 @@ $ pgbench -i bench $ pgbench -c10 -t300 bench bench=# \x -bench=# SELECT query, calls, total_time, rows, 100.0 * shared_blks_hit / +bench=# SELECT query, calls, total_exec_time, rows, 100.0 * shared_blks_hit / nullif(shared_blks_hit + shared_blks_read, 0) AS hit_percent - FROM pg_stat_statements ORDER BY total_time DESC LIMIT 5; - bench=# SELECT query, calls, total_time, rows, 100.0 * shared_blks_hit / - nullif(shared_blks_hit + shared_blks_read, 0) AS hit_percent - FROM pg_stat_statements ORDER BY total_time DESC LIMIT 5; --[ RECORD 1 ]-------------------------------------------------------------------- -query | UPDATE pgbench_branches SET bbalance = bbalance + $1 WHERE bid = $2 -calls | 3000 -total_time | 25565.855387 -rows | 3000 -hit_percent | 100.0000000000000000 --[ RECORD 2 ]-------------------------------------------------------------------- -query | UPDATE pgbench_tellers SET tbalance = tbalance + $1 WHERE tid = $2 -calls | 3000 -total_time | 20756.669379 -rows | 3000 -hit_percent | 100.0000000000000000 --[ RECORD 3 ]-------------------------------------------------------------------- -query | copy pgbench_accounts from stdin -calls | 1 -total_time | 291.865911 -rows | 100000 -hit_percent | 100.0000000000000000 --[ RECORD 4 ]-------------------------------------------------------------------- -query | UPDATE pgbench_accounts SET abalance = abalance + $1 WHERE aid = $2 -calls | 3000 -total_time | 271.232977 -rows | 3000 -hit_percent | 98.5723926698852723 --[ RECORD 5 ]-------------------------------------------------------------------- -query | alter table pgbench_accounts add primary key (aid) -calls | 1 -total_time | 160.588563 -rows | 0 -hit_percent | 100.0000000000000000 + FROM pg_stat_statements ORDER BY total_exec_time DESC LIMIT 5; + +-[ RECORD 1 ]---+--------------------------------------------------&zwsp;------------------ +query | UPDATE pgbench_branches SET bbalance = bbalance + $1 WHERE bid = $2 +calls | 3000 +total_exec_time | 25565.855387 +rows | 3000 +hit_percent | 100.0000000000000000 +-[ RECORD 2 ]---+--------------------------------------------------&zwsp;------------------ +query | UPDATE pgbench_tellers SET tbalance = tbalance + $1 WHERE tid = $2 +calls | 3000 +total_exec_time | 20756.669379 +rows | 3000 +hit_percent | 100.0000000000000000 +-[ RECORD 3 ]---+--------------------------------------------------&zwsp;------------------ +query | copy pgbench_accounts from stdin +calls | 1 +total_exec_time | 291.865911 +rows | 100000 +hit_percent | 100.0000000000000000 +-[ RECORD 4 ]---+--------------------------------------------------&zwsp;------------------ +query | UPDATE pgbench_accounts SET abalance = abalance + $1 WHERE aid = $2 +calls | 3000 +total_exec_time | 271.232977 +rows | 3000 +hit_percent | 98.8454011741682975 +-[ RECORD 5 ]---+--------------------------------------------------&zwsp;------------------ +query | alter table pgbench_accounts add primary key (aid) +calls | 1 +total_exec_time | 160.588563 +rows | 0 +hit_percent | 100.0000000000000000 bench=# SELECT pg_stat_statements_reset(0,0,s.queryid) FROM pg_stat_statements AS s WHERE s.query = 'UPDATE pgbench_branches SET bbalance = bbalance + $1 WHERE bid = $2'; -bench=# SELECT query, calls, total_time, rows, 100.0 * shared_blks_hit / +bench=# SELECT query, calls, total_exec_time, rows, 100.0 * shared_blks_hit / nullif(shared_blks_hit + shared_blks_read, 0) AS hit_percent - FROM pg_stat_statements ORDER BY total_time DESC LIMIT 5; --[ RECORD 1 ]-------------------------------------------------------------------- -query | UPDATE pgbench_tellers SET tbalance = tbalance + $1 WHERE tid = $2 -calls | 3000 -total_time | 20756.669379 -rows | 3000 -hit_percent | 100.0000000000000000 --[ RECORD 2 ]-------------------------------------------------------------------- -query | copy pgbench_accounts from stdin -calls | 1 -total_time | 291.865911 -rows | 100000 -hit_percent | 100.0000000000000000 --[ RECORD 3 ]-------------------------------------------------------------------- -query | UPDATE pgbench_accounts SET abalance = abalance + $1 WHERE aid = $2 -calls | 3000 -total_time | 271.232977 -rows | 3000 -hit_percent | 98.5723926698852723 --[ RECORD 4 ]-------------------------------------------------------------------- -query | alter table pgbench_accounts add primary key (aid) -calls | 1 -total_time | 160.588563 -rows | 0 -hit_percent | 100.0000000000000000 --[ RECORD 5 ]-------------------------------------------------------------------- -query | vacuum analyze pgbench_accounts -calls | 1 -total_time | 136.448116 -rows | 0 -hit_percent | 99.9201915403032721 + FROM pg_stat_statements ORDER BY total_exec_time DESC LIMIT 5; +-[ RECORD 1 ]---+--------------------------------------------------&zwsp;------------------ +query | UPDATE pgbench_tellers SET tbalance = tbalance + $1 WHERE tid = $2 +calls | 3000 +total_exec_time | 20756.669379 +rows | 3000 +hit_percent | 100.0000000000000000 +-[ RECORD 2 ]---+--------------------------------------------------&zwsp;------------------ +query | copy pgbench_accounts from stdin +calls | 1 +total_exec_time | 291.865911 +rows | 100000 +hit_percent | 100.0000000000000000 +-[ RECORD 3 ]---+--------------------------------------------------&zwsp;------------------ +query | UPDATE pgbench_accounts SET abalance = abalance + $1 WHERE aid = $2 +calls | 3000 +total_exec_time | 271.232977 +rows | 3000 +hit_percent | 98.8454011741682975 +-[ RECORD 4 ]---+--------------------------------------------------&zwsp;------------------ +query | alter table pgbench_accounts add primary key (aid) +calls | 1 +total_exec_time | 160.588563 +rows | 0 +hit_percent | 100.0000000000000000 +-[ RECORD 5 ]---+--------------------------------------------------&zwsp;------------------ +query | vacuum analyze pgbench_accounts +calls | 1 +total_exec_time | 136.448116 +rows | 0 +hit_percent | 99.9201915403032721 bench=# SELECT pg_stat_statements_reset(0,0,0); -bench=# SELECT query, calls, total_time, rows, 100.0 * shared_blks_hit / +bench=# SELECT query, calls, total_exec_time, rows, 100.0 * shared_blks_hit / nullif(shared_blks_hit + shared_blks_read, 0) AS hit_percent - FROM pg_stat_statements ORDER BY total_time DESC LIMIT 5; --[ RECORD 1 ]--------------------------------------- -query | SELECT pg_stat_statements_reset(0,0,0) -calls | 1 -total_time | 0.189497 -rows | 1 -hit_percent | + FROM pg_stat_statements ORDER BY total_exec_time DESC LIMIT 5; +-[ RECORD 1 ]---+--------------------------------------------------&zwsp;--------------------------- +query | SELECT pg_stat_statements_reset(0,0,0) +calls | 1 +total_exec_time | 0.189497 +rows | 1 +hit_percent | +-[ RECORD 2 ]---+--------------------------------------------------&zwsp;--------------------------- +query | SELECT query, calls, total_exec_time, rows, $1 * shared_blks_hit / + + | nullif(shared_blks_hit + shared_blks_read, $2) AS hit_percent+ + | FROM pg_stat_statements ORDER BY total_exec_time DESC LIMIT $3 +calls | 0 +total_exec_time | 0 +rows | 0 +hit_percent | diff --git a/postgresql/pgtrgm.xml b/postgresql/pgtrgm.xml index c6bf8c8b6..42f1e2158 100644 --- a/postgresql/pgtrgm.xml +++ b/postgresql/pgtrgm.xml @@ -19,6 +19,12 @@ chaînes similaires. + + This module is considered trusted, that is, it can be + installed by non-superusers who have CREATE privilege + on the current database. + + Concepts du trigramme (ou trigraphe) @@ -71,128 +77,106 @@ Fonctions de <filename>pg_trgm</filename> - - - - Fonction - Retour - Description - - - - - - similarity(text, text)similarity - real - - Renvoie un nombre indiquant la similarité des deux arguments. L'échelle - du résultat va de zéro (indiquant que les deux chaînes sont complètement - différentes) à un (indiquant que les deux chaînes sont identiques). - - - - show_trgm(text)show_trgm - text[] - - Renvoie un tableau de tous les trigrammes d'une chaîne donnée. (En - pratique, ceci est peu utile, sauf pour le débogage.) - - - - - word_similarity(text, text) - word_similarity - - real - - Renvoie un nombre qui indique la plus grande similarité entre - l'ensemble de trigrammes dans la première chaîne et toute étendue - continue d'un ensemble trié de trigrammes dans la deuxième chaîne. Pour - les détails, voir l'explication ci-dessous. - - - - - strict_word_similarity(text, text) - strict_word_similarity - - real - - Similarité stricte : - identique à word_similarity(text, text), mais - force à étendre les limites pour correspondre aux limites du mot. Comme - nous n'avons pas de trigrammes sur plusieurs mots, cette fonction - renvoie en fait la plus grande similarité entre la première chaîne et - toute étendue continue de mots de la deuxième chaîne. - - - - show_limit()show_limit - real - - Renvoie la limite de similarité utilisée par l'opérateur - %. Ceci configure la similarité minimale entre deux - mots pour qu'ils soient considérés suffisamment proches, par exemple - (obsolète). - - - - set_limit(real)set_limit - real - - Configure la limite de similarité actuelle utilisée par l'opérateur - %. Le limite se positionne entre 0 et 1, elle vaut - par défaut 0,3. Renvoie la valeur passée (obsolète). - - - - text <-> text - real - - Renvoie la distance entre les arguments, qui vaut - un moins la valeur de similarity(). - - - - - text <<-> text - - real - - Renvoie la distance entre les arguments, qui est - équivalente 1 moins la valeur de word_similarity(). - - - - - text <->> text - - real - - Commutateur de l'opérateur <<->. - - - - - text <<<-> text - - real - - Renvoie la distance entre les arguments, autrement dit 1 - moins la valeur de strict_word_similarity(). - - - - - text <->>> text - - real - - Commutateur de l'opérateur <->>>. - - - - + + + + + Fonction + + + Description + + + + + + + + similarity + similarity ( text, text ) + real + + + Renvoie un nombre indiquant la similarité des deux arguments. + L'échelle du résultat va de zéro (indiquant que les deux chaînes sont + complètement différentes) à un (indiquant que les deux chaînes sont + identiques). + + + + + + show_trgm + show_trgm ( text ) + text[] + + + Renvoie un tableau de tous les trigrammes d'une chaîne donnée. (En + pratique, ceci est peu utile, sauf pour le débogage.) + + + + + + word_similarity + word_similarity ( text, text ) + real + + + Renvoie un nombre qui indique la plus grande similarité entre + l'ensemble de trigrammes dans la première chaîne et toute étendue + continue d'un ensemble trié de trigrammes dans la deuxième chaîne. + Pour les détails, voir l'explication ci-dessous. + + + + + + strict_word_similarity + strict_word_similarity ( text, text ) + real + + + Identique à word_similarity(text, text), mais + force à étendre les limites pour correspondre aux limites du mot. Comme + nous n'avons pas de trigrammes sur plusieurs mots, cette fonction + renvoie en fait la plus grande similarité entre la première chaîne et + toute étendue continue de mots de la deuxième chaîne. + + + + + + show_limit + show_limit () + real + + + Renvoie la limite de similarité utilisée par l'opérateur + %. Ceci configure la similarité minimale entre deux + mots pour qu'ils soient considérés suffisamment proches pour être des + fautes d'orthographe l'un de l'autre + (obsolète; instead use SHOW + pg_trgm.similarity_threshold.). + + + + + + set_limit + set_limit ( real ) + real + + + Configure la limite de similarité actuelle utilisée par l'opérateur + %. Le limite se positionne entre 0 et 1, elle vaut + par défaut 0,3. Renvoie la valeur passée (obsolète; + instead use SET + pg_trgm.similarity_threshold.). + + + +
@@ -225,9 +209,9 @@ - En même temps, strict_word_similarity(text, text) + En même temps, strict_word_similarity sélectionne une étendue de mots dans la deuxième chaîne. Dans l'exemple - ci-dessus, strict_word_similarity(text, text) + ci-dessus, strict_word_similarity sélectionnerait l'étendue d'un mot seul 'words', dont l'ensemble de trigrammes est {" w"," wo","wor","ord","rds","ds"}. @@ -242,72 +226,141 @@ - De ce fait, la fonction strict_word_similarity(text, - text) est utile pour trouver la similarité de mots entiers, - alors que word_similarity(text, text) est plus + De ce fait, la fonction strict_word_similarity est + utile pour trouver la similarité de mots entiers, + alors que word_similarity est plus intéressant pour trouver la similarité de parties de mots. Opérateurs de <filename>pg_trgm</filename> - - - - Opérateur - Retour - Description - - - - - - text % text - boolean - - Renvoie true si les arguments ont une similarité - supérieure à la limite configurée par - pg_trgm.similarity_threshold. - - - - text <% text - boolean - - Renvoie true si la similarité entre l'ensemble de - trigrammes du premier argument et une étendue continue d'un ensemble - trie de trigrammes dans le second argument est plus grande que la - limite de similarité actuelle, telle qu'elle est configurée avec le - paramètre pg_trgm.word_similarity_threshold. - - - - text %> text - boolean - - Commutateur de l'opérateur <%. - - - - text <<% text - boolean - - Renvoie true si son deuxième argument a une étendue - continue d'un ensemble trigramme ordonné qui correspond aux limites du - mot et que sa similarité à l'ensemble de trigramme du premier argument - est plus grand que la limite de similarité du mot strict courant, telle - qu'elle est configurée par le paramètre - pg_trgm.strict_word_similarity_threshold. - - - - text %>> text - boolean - - Commutateur de l'opérateur <<%. - - - - + + + + + Operator + + + Description + + + + + + + + text % text + boolean + + + Renvoie true si les arguments ont une similarité + supérieure à la limite configurée par + pg_trgm.similarity_threshold. + + + + + + text <% text + boolean + + + Renvoie true si la similarité entre l'ensemble de + trigrammes du premier argument et une étendue continue d'un ensemble + trie de trigrammes dans le second argument est plus grande que la + limite de similarité actuelle, telle qu'elle est configurée avec le + paramètre pg_trgm.word_similarity_threshold. + + + + + + text %> text + boolean + + + Commutateur de l'opérateur <<%. + + + + + + text <<% text + boolean + + + Returns true if its second argument has a continuous + extent of an ordered trigram set that matches word boundaries, + and its similarity to the trigram set of the first argument is greater + than the current strict word similarity threshold set by the + pg_trgm.strict_word_similarity_threshold parameter. + + + + + + text %>> text + boolean + + + Commutator of the <<% operator. + + + + + + text <-> text + real + + + Returns the distance between the arguments, that is + one minus the similarity() value. + + + + + + text <<-> text + real + + + Returns the distance between the arguments, that is + one minus the word_similarity() value. + + + + + + text <->> text + real + + + Commutator of the <<-> operator. + + + + + + text <<<-> text + real + + + Returns the distance between the arguments, that is + one minus the strict_word_similarity() value. + + + + + + text <->>> text + real + + + Commutator of the <<<-> operator. + + + +
@@ -378,6 +431,23 @@ CREATE INDEX trgm_idx ON test_trgm USING GIN (t gin_trgm_ops); + + gist_trgm_ops GiST opclass approximates a set of + trigrams as a bitmap signature. Its optional integer parameter + siglen determines the + signature length in bytes. The default length is 12 bytes. + Valid values of signature length are between 1 and 2024 bytes. Longer + signatures lead to a more precise search (scanning a smaller fraction of the index and + fewer heap pages), at the cost of a larger index. + + + + Example of creating such an index with a signature length of 32 bytes: + + +CREATE INDEX trgm_idx ON test_trgm USING GIST (t gist_trgm_ops(siglen=32)); + + À ce point, vous aurez un index sur la colonne t que vous pouvez utiliser pour une recherche de similarité. Une requête diff --git a/postgresql/planstats.xml b/postgresql/planstats.xml index c2bc9d380..0e5a2c436 100644 --- a/postgresql/planstats.xml +++ b/postgresql/planstats.xml @@ -109,7 +109,7 @@ WHERE tablename='tenk1' AND attname='unique1'; de localiser la partie où se trouve notre valeur et compter une partie d'elle et toutes celles qui la précèdent. La valeur 1000 est clairement dans la seconde partie - (993-1997), donc en supposant une distribution linéaire des valeurs à + (993–1997), donc en supposant une distribution linéaire des valeurs à l'intérieur de chaque partie, nous pouvons calculer la sélectivité comme étant : diff --git a/postgresql/plperl.xml b/postgresql/plperl.xml index c60a545a7..4e0761a9b 100644 --- a/postgresql/plperl.xml +++ b/postgresql/plperl.xml @@ -5,7 +5,7 @@ révision $Revision$ --> - PL/Perl - Langage de procédures Perl + PL/Perl — Langage de procédures Perl PL/Perl @@ -59,7 +59,9 @@ Pour créer une fonction dans le langage PL/Perl, utilisez la syntaxe standard  : CREATE FUNCTION nom_fonction (types-arguments) RETURNS -type-retour AS $$ +type-retour +-- attributs de fonction +AS $$ # Corps de la fonction PL/Perl $$ LANGUAGE plperl; @@ -195,6 +197,39 @@ $$ LANGUAGE plperl; pour échapper des données binaires en retournant une valeur de type bytea. + + One case that is particularly important is boolean values. As just + stated, the default behavior for bool values is that they + are passed to Perl as text, thus either 't' + or 'f'. This is problematic, since Perl will not + treat 'f' as false! It is possible to improve matters + by using a transform (see + ). Suitable transforms are provided + by the bool_plperl extension. To use it, install + the extension: + +CREATE EXTENSION bool_plperl; -- or bool_plperlu for PL/PerlU + + Then use the TRANSFORM function attribute for a + PL/Perl function that takes or returns bool, for example: + +CREATE FUNCTION perl_and(bool, bool) RETURNS bool +TRANSFORM FOR TYPE bool +AS $$ + my ($a, $b) = @_; + return $a && $b; +$$ LANGUAGE plperl; + + When this transform is applied, bool arguments will be seen + by Perl as being 1 or empty, thus properly true or + false. If the function result is type bool, it will be true + or false according to whether Perl would evaluate the returned value as + true. + Similar transformations are also performed for boolean query arguments + and results of SPI queries performed inside the function + (). + + Perl peut renvoyer des tableaux PostgreSQL comme référence à des tableaux Perl. Voici un exemple : @@ -383,6 +418,13 @@ SELECT * FROM perl_set(); accepterons toute chaîne qui a un format d'entrée acceptable pour le type de retour déclaré de la fonction. + + + If this behavior is inconvenient for a particular case, it can be + improved by using a transform, as already illustrated + for bool values. Several examples of transform modules + are included in the PostgreSQL distribution. +
diff --git a/postgresql/plpgsql.xml b/postgresql/plpgsql.xml index d5af70c18..06b181807 100644 --- a/postgresql/plpgsql.xml +++ b/postgresql/plpgsql.xml @@ -5,7 +5,7 @@ révision $Revision: 1515 $ --> - <application>PL/pgSQL</application> - Langage de procédures <acronym>SQL</acronym> + <application>PL/pgSQL</application> — Langage de procédures <acronym>SQL</acronym> PL/pgSQL @@ -148,12 +148,10 @@ Les fonctions PL/pgSQL acceptent en entrée et - en sortie les types polymorphes anyelement, - anyarray, anynonarray, anyenum - et anyrange. - Le type de données réel géré par une fonction polymorphe peut varier - d'appel en appel (voir la ). - Voir l'exemple de la . + en sortie les types polymorphes described in + , thus allowing the actual data + types handled by the function to vary from call to call. + Examples appear in . @@ -528,8 +526,8 @@ $$ LANGUAGE plpgsql; Lorsque le type de retour d'une fonction PL/pgSQL - est déclaré comme type polymorphe (anyelement, - anyarray, anynonarray, anyenum et anyrange), un + est déclaré comme type polymorphe (see + ), un paramètre spécial $0 est créé. Son type de donnée est le type effectif de retour de la fonction, déduit d'après les types en entrée (voir la ). @@ -567,6 +565,32 @@ END; $$ LANGUAGE plpgsql; + + + In practice it might be more useful to declare a polymorphic function + using the anycompatible family of types, so that automatic + promotion of the input arguments to a common type will occur. + For example: + + +CREATE FUNCTION add_three_values(v1 anycompatible, v2 anycompatible, v3 anycompatible) +RETURNS anycompatible AS $$ +BEGIN + RETURN v1 + v2 + v3; +END; +$$ LANGUAGE plpgsql; + + + With this example, a call such as + + +SELECT add_three_values(1, 2, 4.7); + + + will work, automatically promoting the integer inputs to numeric. + The function using anyelement would require you to + cast the three inputs to the same type manually. + @@ -1495,6 +1519,9 @@ EXECUTE format('UPDATE tbl SET %I = $1 WHERE cle = $2', nom_colonne) Éléments de diagnostique disponibles + + + Nom @@ -2809,6 +2836,9 @@ GET STACKED DIAGNOSTICS variable { = | := } Diagnostiques et erreurs + + + Nom diff --git a/postgresql/plpython.xml b/postgresql/plpython.xml index 550917ea5..3f0e866f7 100644 --- a/postgresql/plpython.xml +++ b/postgresql/plpython.xml @@ -5,7 +5,7 @@ révision $Revision$ --> - PL/Python - Langage de procédures Python + PL/Python — Langage de procédures Python PL/Python Python @@ -160,7 +160,7 @@ Les intrépides qui veulent construire un système d'exploitation utilisant seulement Python-3, peuvent modifier le contenu de - pg_pltemplate + plpythonu's extension control and script files pour rendre plpythonu équivalent à plpython3u, en gardant en tête que cela rend leur installation incompatible avec la majorité de ce qui existe dans ce @@ -1245,7 +1245,7 @@ except spiexceptions.DivisionByZero: return "denominateur doit être différent de zéro" except spiexceptions.UniqueViolation: return "a déjà cette fraction" -except plpy.SPIError, e: +except plpy.SPIError as e: return "autre erreur, SQLSTATE %s" % e.sqlstate else: return "fraction insérée" @@ -1293,7 +1293,7 @@ CREATE FUNCTION transfert_fonds() RETURNS void AS $$ try: plpy.execute("UPDATE comptes SET balance = balance - 100 WHERE nom = 'joe'") plpy.execute("UPDATE comptes SET balance = balance + 100 WHERE nom = 'mary'") -except plpy.SPIError, e: +except plpy.SPIError as e: result = "erreur lors du transfert de fond : %s" % e.args else: result = "fonds transféré correctement" @@ -1323,7 +1323,7 @@ try: with plpy.subtransaction(): plpy.execute("UPDATE comptes SET balance = balance - 100 WHERE nom = 'joe'") plpy.execute("UPDATE comptes SET balance = balance + 100 WHERE nom = 'mary'") -except plpy.SPIError, e: +except plpy.SPIError as e: result = "erreur lors du transfert de fond : %s" % e.args else: result = "fonds transféré correctement" @@ -1353,9 +1353,8 @@ $$ LANGUAGE plpythonu; Pour les gestionnaires de contexte, la syntaxe utilisant le mot clé with, est disponible par défaut avec Python 2.6. - Si vous utilisez une version plus ancienne de Python, il est toujours - possible d'utiliser les sous-transactions explicites, bien que cela - ne sera pas transparent. Vous pouvez appeler les fonctions + For compatibility with + older Python versions, vous pouvez appeler les fonctions __enter__ et __exit__ des gestionnaires de sous-transactions en utilisant les alias enter et @@ -1375,7 +1374,7 @@ try: raise else: subxact.exit(None, None, None) -except plpy.SPIError, e: +except plpy.SPIError as e: result = "erreur lors du transfert de fond : %s" % e.args else: result = "fonds transféré correctement" @@ -1385,17 +1384,6 @@ plpy.execute(plan, [result]) $$ LANGUAGE plpythonu; - - - - Bien que les gestionnaires de contexte sont implémentés dans Python - 2.5, pour utiliser la syntaxe with dans cette - version vous aurez besoin d'utiliser une requête - future. Dû aux détails d'implémentation, vous ne pouvez pas - utiliser les requêtes futures dans des fonctions PL/Python. - - diff --git a/postgresql/pltcl.xml b/postgresql/pltcl.xml index 7f03e1669..010b2bf9b 100644 --- a/postgresql/pltcl.xml +++ b/postgresql/pltcl.xml @@ -5,7 +5,7 @@ révision $Revision$ --> - PL/Tcl - Langage de procédures Tcl + PL/Tcl — Langage de procédures Tcl PL/Tcl diff --git a/postgresql/postgres-fdw.xml b/postgresql/postgres-fdw.xml index 253722228..6753d0ad3 100644 --- a/postgresql/postgres-fdw.xml +++ b/postgresql/postgres-fdw.xml @@ -113,13 +113,14 @@ postgres_fdw peut avoir les mêmes options que celles acceptées par libpq dans les chaînes de connexion comme décrit dans . Cependant, ces - options ne sont pas autorisées : + options ne sont pas autorisées ou sont gérées d'une façon spéciale : - user et password (spécifiez-les au - niveau de la correspondance d'utilisateur) + user, password et + sslpassword (spécifiez-les au + niveau de la correspondance d'utilisateur instead, or use a service file) @@ -134,15 +135,53 @@ postgres_fdw) + + + sslkey and sslcert - these may + appear in either or both a connection and a user + mapping. If both are present, the user mapping setting overrides the + connection setting. + + + + Only superusers may create or modify user mappings with the + sslcert or sslkey settings. + + Seuls les superutilisateurs peuvent se connecter à un serveur distant sans authentification par mot de passe. Donc spécifiez toujours l'option password pour les correspondances d'utilisateur appartenant aux utilisateurs simples. + + + A superuser may override this check on a per-user-mapping basis by setting + the user mapping option password_required 'false', e.g. + +ALTER USER MAPPING FOR some_non_superuser SERVER loopback_nopw +OPTIONS (ADD password_required 'false'); + + To prevent unprivileged users from exploiting the authentication rights + of the unix user the postgres server is running as to escalate to superuser + rights, only the superuser may set this option on a user mapping. + + + Care is required to ensure that this does not allow the mapped + user the ability to connect as superuser to the mapped database per + CVE-2007-3278 and CVE-2007-6601. Don't set + password_required=false + on the public role. Keep in mind that the mapped + user can potentially use any client certificates, + .pgpass, + .pg_service.conf etc in the unix home directory of the + system user the postgres server runs as. They can also use any trust + relationship granted by authentication modes like peer + or ident authentication. + diff --git a/postgresql/postgres.xml b/postgresql/postgres.xml index 7be2d7d53..cce312151 100644 --- a/postgresql/postgres.xml +++ b/postgresql/postgres.xml @@ -1,7 +1,6 @@ - @@ -22,6 +21,13 @@ + + + ]> @@ -285,6 +291,7 @@ signifiant très certainement mondial ;-) SAS 20051108--> &storage; &bki; &planstats; + &backup-manifest; @@ -302,6 +309,8 @@ signifiant très certainement mondial ;-) SAS 20051108--> &docguide; &limits; &acronyms; + &glossary; + &color; &frenchtranslation; diff --git a/postgresql/protocol.xml b/postgresql/protocol.xml index 0b483ddc6..ea26fe93e 100644 --- a/postgresql/protocol.xml +++ b/postgresql/protocol.xml @@ -2761,8 +2761,8 @@ psql "dbname=postgres replication=database" -c "IDENTIFY_SYSTEM;" - - BASE_BACKUP [ LABEL 'label' ] [ PROGRESS ] [ FAST ] [ WAL ] [ NOWAIT ] [ MAX_RATE rate ] [ TABLESPACE_MAP ] [ NOVERIFY_CHECKSUMS ] + + BASE_BACKUP [ LABEL 'label' ] [ PROGRESS ] [ FAST ] [ WAL ] [ NOWAIT ] [ MAX_RATE rate ] [ TABLESPACE_MAP ] [ NOVERIFY_CHECKSUMS ] [ MANIFEST manifest_option ] [ MANIFEST_CHECKSUMS checksum_algorithm ] BASE_BACKUP @@ -2878,6 +2878,41 @@ psql "dbname=postgres replication=database" -c "IDENTIFY_SYSTEM;" + + + MANIFEST manifest_option + + + When this option is specified with a value of yes + or force-encode, a backup manifest is created + and sent along with the backup. The manifest is a list of every + file present in the backup with the exception of any WAL files that + may be included. It also stores the size, last modification time, and + an optional checksum for each file. + A value of force-encode forces all filenames + to be hex-encoded; otherwise, this type of encoding is performed only + for files whose names are non-UTF8 octet sequences. + force-encode is intended primarily for testing + purposes, to be sure that clients which read the backup manifest + can handle this case. For compatibility with previous releases, + the default is MANIFEST 'no'. + + + + + + MANIFEST_CHECKSUMS checksum_algorithm + + + Specifies the algorithm that should be applied to each file included + in the backup manifest. Currently, the available + algorithms are NONE, CRC32C, + SHA224, SHA256, + SHA384, and SHA512. + The default is CRC32C. + + + @@ -2918,7 +2953,8 @@ psql "dbname=postgres replication=database" -c "IDENTIFY_SYSTEM;" size (int8) - La taille approximative du tablespace, si le rapport de progression + La taille approximative du tablespace, in kilobytes (1024 bytes), + si le rapport de progression a été demandé, null dans le cas contraire. diff --git a/postgresql/queries.xml b/postgresql/queries.xml index 14b9e9453..e50b1e3b4 100644 --- a/postgresql/queries.xml +++ b/postgresql/queries.xml @@ -106,7 +106,7 @@ et utiliser la commande SELECT comme une calculatrice : Clause <literal>FROM</literal> - La dérive une + La clause FROM dérive une table à partir d'une ou plusieurs tables données dans une liste de référence dont les tables sont séparées par des virgules. FROM reference_table , reference_table , ... @@ -925,7 +925,7 @@ WHERE pname IS NULL; - La syntaxe de la est + La syntaxe de la clause WHERE est WHERE condition_recherchecondition_recherche est toute expression de valeur (voir la ) renvoyant une valeur @@ -1022,7 +1022,7 @@ SELECT ... FROM fdt WHERE EXISTS (SELECT c1 FROM t2 WHERE c2 > fdt.c1)reference_colonne_regroupement,reference_colonne_regroupement... - La est + La clause GROUP BY est utilisée pour regrouper les lignes d'une table qui ont les mêmes valeurs dans toutes les colonnes précisées. L'ordre dans lequel ces colonnes sont indiquées importe peu. L'effet est de combiner chaque ensemble de lignes diff --git a/postgresql/ref/allfiles.xml b/postgresql/ref/allfiles.xml index e50fdb55a..a39ed32f2 100644 --- a/postgresql/ref/allfiles.xml +++ b/postgresql/ref/allfiles.xml @@ -211,6 +211,7 @@ Complete list of usable.xml source files in this directory. + diff --git a/postgresql/ref/alter_collation.xml b/postgresql/ref/alter_collation.xml index 0de3f76e4..756beee85 100644 --- a/postgresql/ref/alter_collation.xml +++ b/postgresql/ref/alter_collation.xml @@ -89,16 +89,15 @@ ALTER COLLATION nom SET SCHEMA nouveau_s Met à jour la version de la collation. - Voir ci-dessous. + Voir ci-dessous. - - Notes + + Notes Lorsque les collations fournies par la bibliothèque ICU, la version du @@ -128,6 +127,17 @@ HINT: Rebuild all objects affected by this collation and run ALTER COLLATION pg correctement. + + When using collations provided by libc and + PostgreSQL was built with the GNU C library, the + C library's version is used as a collation version. Since collation + definitions typically change only with GNU C library releases, this provides + some defense against corruption, but it is not completely reliable. + + + Currently, there is no version tracking for the database default collation. + + La requête suivante peut être utilisée pour identifier toutes les collations dans la base de données courante qui nécessitent d'être rafraichie ainsi que diff --git a/postgresql/ref/alter_function.xml b/postgresql/ref/alter_function.xml index 966c5519a..424936523 100644 --- a/postgresql/ref/alter_function.xml +++ b/postgresql/ref/alter_function.xml @@ -32,7 +32,7 @@ ALTER FUNCTION nom [ ( [ [ mode_arg ] [ nom_arg ] type_arg [, ...] ] ) ] SET SCHEMA nouveau_schema ALTER FUNCTION nom [ ( [ [ mode_arg ] [ nom_arg ] type_arg [, ...] ] ) ] - DEPENDS ON EXTENSION nom_extension + [ NO ] DEPENDS ON EXTENSION nom_extension action peut être : @@ -157,10 +157,14 @@ ALTER FUNCTION nom [ ( [ [ extension_name + DEPENDS ON EXTENSION extension_name + NO DEPENDS ON EXTENSION extension_name - Le nom de l'extension dont la fonction dépend. + This form marks the function as dependent on the extension, or no longer + dependent on that extension if NO is specified. + A function that's marked as dependent on an extension is automatically + dropped when the extension is dropped. diff --git a/postgresql/ref/alter_index.xml b/postgresql/ref/alter_index.xml index d4cc2dd4b..a7ada9c70 100644 --- a/postgresql/ref/alter_index.xml +++ b/postgresql/ref/alter_index.xml @@ -103,11 +103,14 @@ ALTER INDEX ALL IN TABLESPACE nom [ - DEPENDS ON EXTENSION + DEPENDS ON EXTENSION extension_name + NO DEPENDS ON EXTENSION extension_name - Cette clause marque l'index comme dépendant de l'extension, pour qu'en cas - de suppression de l'extension, l'index soit automatiquement supprimé. + Cette clause marque l'index comme dépendant de l'extension, or no longer + dependent on that extension if NO is specified. + An index that's marked as dependent on an extension is automatically + dropped when the extension is dropped. diff --git a/postgresql/ref/alter_materialized_view.xml b/postgresql/ref/alter_materialized_view.xml index 17987d424..3ee5603ff 100644 --- a/postgresql/ref/alter_materialized_view.xml +++ b/postgresql/ref/alter_materialized_view.xml @@ -66,12 +66,6 @@ de : d'une vue.) - - La clause DEPENDS ON EXTENSION marque la vue matérialisée - comme dépendante d'une extension. Ceci permet de supprimer la vue matérialisée - quand l'extension est supprimée. - - Les différentes formes et actions disponibles pour ALTER MATERIALIZED VIEW sont un sous-ensemble de celles disponibles pour ALTER @@ -109,7 +103,10 @@ de : nom_extension - Nom de l'extension dont dépend la vue matérialisée. + Nom de l'extension dont dépend la vue matérialisée (or no longer + dependent on, if NO is specified). A materialized view + that's marked as dependent on an extension is automatically dropped when + the extension is dropped. diff --git a/postgresql/ref/alter_opfamily.xml b/postgresql/ref/alter_opfamily.xml index b779392eb..e31c3204a 100644 --- a/postgresql/ref/alter_opfamily.xml +++ b/postgresql/ref/alter_opfamily.xml @@ -154,7 +154,7 @@ ALTER OPERATOR FAMILY nom USING op_type car les types de données en entrée de la fonction sont toujours les bons à utiliser. Pour les fonctions de tri - des index B-tree ainsi que pour toutes les fonctions des classes + des index B-tree, B-Tree equal image functions, ainsi que pour toutes les fonctions des classes d'opérateur GIST, SP-GiST et GIN, il est nécessaire de spécifier le type de données en entrée qui sera utilisé par la fonction. diff --git a/postgresql/ref/alter_statistics.xml b/postgresql/ref/alter_statistics.xml index e391ffe49..1933c9cb4 100644 --- a/postgresql/ref/alter_statistics.xml +++ b/postgresql/ref/alter_statistics.xml @@ -27,6 +27,7 @@ PostgreSQL documentation ALTER STATISTICS nom OWNER TO { nouveau_proprietaire | CURRENT_USER | SESSION_USER } ALTER STATISTICS nom RENAME TO nouveau_nom ALTER STATISTICS nom SET SCHEMA nouveau_schema +ALTER STATISTICS name SET STATISTICS new_target @@ -97,6 +98,22 @@ ALTER STATISTICS nom SET SCHEMA + + new_target + + + The statistic-gathering target for this statistics object for subsequent + operations. + The target can be set in the range 0 to 10000; alternatively, set it + to -1 to revert to using the system default statistics + target (). + For more information on the use of statistics by the + PostgreSQL query planner, refer to + . + + + + diff --git a/postgresql/ref/alter_table.xml b/postgresql/ref/alter_table.xml index 04a1df895..8a9df5e7c 100644 --- a/postgresql/ref/alter_table.xml +++ b/postgresql/ref/alter_table.xml @@ -46,6 +46,7 @@ ALTER TABLE [ IF EXISTS ] nom ALTER [ COLUMN ] nom_colonne SET DEFAULT expression ALTER [ COLUMN ] nom_colonne DROP DEFAULT ALTER [ COLUMN ] nom_colonne { SET | DROP } NOT NULL + ALTER [ COLUMN ] column_name DROP EXPRESSION [ IF EXISTS ] ALTER [ COLUMN ] nom_colonne ADD GENERATED { ALWAYS | BY DEFAULT } AS IDENTITY [ ( options_séquence ) ] ALTER [ COLUMN ] nom_colonne { SET GENERATED { ALWAYS | BY DEFAULT } | SET option_séquence | RESTART [ [ WITH ] valeur_redémarrage ] } [...] ALTER [ COLUMN ] nom_colonne DROP IDENTITY [ IF EXISTS ] @@ -201,10 +202,11 @@ WITH ( MODULUS litéral_numérique, SET/DROP DEFAULT - Ajoute ou supprime les valeurs par défaut d'une colonne. - Les valeurs par défaut ne s'appliquent qu'aux commandes - INSERT et UPDATE suivantes ; - elles ne modifient pas les lignes déjà présentes dans la table. + Ajoute ou supprime les valeurs par défaut d'une colonne (where + removal is equivalent to setting the default value to NULL). The new + default value will only apply in subsequent INSERT + or UPDATE commands; it does not cause rows already + in the table to change. @@ -240,6 +242,23 @@ WITH ( MODULUS litéral_numérique, + + DROP EXPRESSION [ IF EXISTS ] + + + This form turns a stored generated column into a normal base column. + Existing data in the columns is retained, but future changes will no + longer apply the generation expression. + + + + If DROP EXPRESSION IF EXISTS is specified and the + column is not a stored generated column, no error is thrown. In this + case a notice is issued instead. + + + + ADD GENERATED { ALWAYS | BY DEFAULT } AS IDENTITY SET GENERATED { ALWAYS | BY DEFAULT } @@ -249,6 +268,10 @@ WITH ( MODULUS litéral_numérique, Modifier une colonne en colonne d'identité ou changer les attributs de génération d'ue colonne d'identité existante. Voir pour plus de détails. + Like SET DEFAULT, these forms only affect the + behavior of subsequent INSERT + and UPDATE commands; they do not cause rows + already in the table to change. @@ -397,8 +420,7 @@ WITH ( MODULUS litéral_numérique, La base de données ne considèrera pas la contrainte comme entièrement vérifiée pour toutes les lignes tant qu'une validation effectuée par l'ordre VALIDATE CONSTRAINT n'aura pas été effectuée. - Voir ci-dessous pour plus d'informations + Voir ci-dessous pour plus d'informations sur l'utilisation de l'option NOT VALID. @@ -493,8 +515,7 @@ WITH ( MODULUS litéral_numérique, Elle le fait en parcourant la table pour s'assurer qu'il n'existe aucune ligne pour laquelle la contrainte n'est pas satisfaite. Si la contrainte est déjà marquée valide, cette clause ne fait rien. - (Voir ci-dessous pour une explication + (Voir ci-dessous pour une explication sur l'utilisation de cette commande.) @@ -596,7 +617,7 @@ WITH ( MODULUS litéral_numérique, pour la table, alors une politique de refus est appliqué par défaut. Notez que les politiques peuvent exister pour une table même si la sécurité niveau ligne est désactivé. Dans ce cas, les politiques ne - seront pas appliquées, elles seront ignorées. Voir aussi pas appliquées, elles seront ignorées. Voir aussi . @@ -707,7 +728,8 @@ WITH ( MODULUS litéral_numérique, Cette forme modifie un ou plusieurs paramètres de stockage pour la table. - Voir + Voir in the + documentation pour les détails sur les paramètres disponibles. Le contenu de la table ne sera pas modifié immédiatement par cette commande ; en fonction du paramètre, il pourra s'avérer nécessaire de réécrire la table pour @@ -1224,8 +1246,8 @@ WITH ( MODULUS litéral_numérique, - - Notes + + Notes Le mot clé COLUMN n'est pas nécessaire. Il peut @@ -1405,6 +1427,32 @@ WITH ( MODULUS litéral_numérique, Ajouter une colonne de type varchar à une table : ALTER TABLE distributeurs ADD COLUMN adresse varchar(30); + That will cause all existing rows in the table to be filled with null + values for the new column. + + + + To add a column with a non-null default: + +ALTER TABLE measurements + ADD COLUMN mtime timestamp with time zone DEFAULT now(); + + Existing rows will be filled with the current time as the value of the + new column, and then new rows will receive the time of their insertion. + + + + To add a column and fill it with a value different from the default to + be used later: + +ALTER TABLE transactions + ADD COLUMN status varchar(30) DEFAULT 'old', + ALTER COLUMN status SET default 'current'; + + Existing rows will be filled with old, but then + the default for subsequent commands will be current. + The effects are the same as if the two sub-commands had been issued + in separate ALTER TABLE commands. diff --git a/postgresql/ref/alter_tablespace.xml b/postgresql/ref/alter_tablespace.xml index 1e956e6f0..e8d36292b 100644 --- a/postgresql/ref/alter_tablespace.xml +++ b/postgresql/ref/alter_tablespace.xml @@ -85,14 +85,16 @@ ALTER TABLESPACE nom RESET ( , , )). Ceci peut être utile si un + linkend="guc-effective-io-concurrency"/>, + ). Ceci peut être utile si un tablespace se trouve sur un disque qui est plus rapide ou plus lent du reste du système d'entrées/sorties. diff --git a/postgresql/ref/alter_trigger.xml b/postgresql/ref/alter_trigger.xml index c95150ae8..b7d040cb6 100644 --- a/postgresql/ref/alter_trigger.xml +++ b/postgresql/ref/alter_trigger.xml @@ -23,7 +23,7 @@ ALTER TRIGGER nom ON nom_table RENAME TO nouveau_nom -ALTER TRIGGER nom ON nom_table DEPENDS ON EXTENSION nom_extension +ALTER TRIGGER nom ON nom_table [ NO ] DEPENDS ON EXTENSION nom_extension @@ -78,7 +78,10 @@ ALTER TRIGGER nom ON nom_extension - Le nom de l'extension dont le trigger dépend. + Le nom de l'extension dont le trigger dépend (or no longer + dependent on, if NO is specified). A trigger + that's marked as dependent on an extension is automatically dropped when + the extension is dropped. diff --git a/postgresql/ref/alter_type.xml b/postgresql/ref/alter_type.xml index c7e9023b1..d9a98f65a 100644 --- a/postgresql/ref/alter_type.xml +++ b/postgresql/ref/alter_type.xml @@ -26,14 +26,16 @@ - ALTER TYPE nom action [, ... ] + ALTER TYPE nom OWNER TO { nouveau_propriétaire | CURRENT_USER | SESSION_USER } -ALTER TYPE nom RENAME ATTRIBUTE nom_attribut TO nouveau_nom_attribut [ CASCADE | RESTRICT ] ALTER TYPE nom RENAME TO nouveau_nom ALTER TYPE nom SET SCHEMA nouveau_schéma +ALTER TYPE name RENAME ATTRIBUTE attribute_name TO new_attribute_name [ CASCADE | RESTRICT ] +ALTER TYPE name action [, ... ] ALTER TYPE nom ADD VALUE [ IF NOT EXISTS ] nouvelle_valeur_enumérée [ { BEFORE | AFTER } valeur_enumérée ] ALTER TYPE nom ADD VALUE [ IF NOT EXISTS ] nouvelle_valeur_enum [ { BEFORE | AFTER } valeur_enum_voisine ] ALTER TYPE nom RENAME VALUE valeur_enum_existante TO nouvelle_valeur_enum +ALTER TYPE name SET ( property = value [, ... ] ) action fait partie de : @@ -51,59 +53,69 @@ ALTER TYPE nom RENAME VALUE - ADD ATTRIBUTE + OWNER - Cette forme ajoute un nouvel attribut à un type composite, avec la même syntaxe que - . + This form changes the owner of the type. - DROP ATTRIBUTE [ IF EXISTS ] + RENAME - Cette forme supprime un attribut d'un type composite. - Si IF EXISTS est spécifié et que l'attribut - cible n'existe pas, aucun message d'erreur ne sera émis, mais - remplacé par une alerte de niveau NOTICE. + This form changes the name of the type. - SET DATA TYPE + SET SCHEMA - Cette forme modifie le type d'un attribut d'un type composite. + This form moves the type into another schema. - OWNER + RENAME ATTRIBUTE - Cette forme modifie le propriétaire d'un type. + This form is only usable with composite types. + It changes the name of an individual attribute of the type. - RENAME + ADD ATTRIBUTE - Cette forme permet de modifier le nom du type ou celui d'un attribut d'un type composite. + This form adds a new attribute to a composite type, using the same syntax as + . - SET SCHEMA + DROP ATTRIBUTE [ IF EXISTS ] + + + This form drops an attribute from a composite type. + If IF EXISTS is specified and the attribute + does not exist, no error is thrown. In this case a notice + is issued instead. + + + + + + ALTER ATTRIBUTE ... SET DATA TYPE - Cette forme déplace le type dans un autre schéma. + This form changes the type of an attribute of a composite type. @@ -135,6 +147,84 @@ ALTER TYPE nom RENAME VALUE + + + + SET ( property = value [, ... ] ) + + + + This form is only applicable to base types. It allows adjustment of a + subset of the base-type properties that can be set in CREATE + TYPE. Specifically, these properties can be changed: + + + + RECEIVE can be set to the name of a binary input + function, or NONE to remove the type's binary + input function. Using this option requires superuser privilege. + + + + + SEND can be set to the name of a binary output + function, or NONE to remove the type's binary + output function. Using this option requires superuser privilege. + + + + + TYPMOD_IN can be set to the name of a type + modifier input function, or NONE to remove the + type's type modifier input function. Using this option requires + superuser privilege. + + + + + TYPMOD_OUT can be set to the name of a type + modifier output function, or NONE to remove the + type's type modifier output function. Using this option requires + superuser privilege. + + + + + ANALYZE can be set to the name of a type-specific + statistics collection function, or NONE to remove + the type's statistics collection function. Using this option + requires superuser privilege. + + + + + STORAGE + TOAST + per-type storage settings + + can be set to plain, + extended, external, + or main (see for + more information about what these mean). However, changing + from plain to another setting requires superuser + privilege (because it requires that the type's C functions all be + TOAST-ready), and changing to plain from another + setting is not allowed at all (since the type may already have + TOASTed values present in the database). Note that changing this + option doesn't by itself change any stored data, it just sets the + default TOAST strategy to be used for table columns created in the + future. See to change the TOAST + strategy for existing table columns. + + + + See for more details about these + type properties. Note that where appropriate, a change in these + properties for a base type will be propagated automatically to domains + based on that type. + + + @@ -157,7 +247,8 @@ ALTER TYPE nom RENAME VALUE USAGE sur le type. + aussi avoir le droit USAGE sur le type de données de la + colonne. @@ -262,6 +353,16 @@ ALTER TYPE nom RENAME VALUE + + property + + + The name of a base-type property to be modified; see above for + possible values. + + + + CASCADE @@ -352,6 +453,18 @@ ALTER TYPE colors ADD VALUE 'orange' AFTER 'red'; Pour renommer une valeur d'une énumération : ALTER TYPE colors RENAME VALUE 'purple' TO 'mauve'; + + + + + To create binary I/O functions for an existing base type: + +CREATE FUNCTION mytypesend(mytype) RETURNS bytea ...; +CREATE FUNCTION mytyperecv(internal, oid, integer) RETURNS mytype ...; +ALTER TYPE mytype SET ( + SEND = mytypesend, + RECEIVE = mytyperecv +); diff --git a/postgresql/ref/alter_view.xml b/postgresql/ref/alter_view.xml index 543f882b3..9854bc8b1 100644 --- a/postgresql/ref/alter_view.xml +++ b/postgresql/ref/alter_view.xml @@ -25,6 +25,7 @@ ALTER VIEW [ IF EXISTS ] nom ALTER [ COLUMN ] nom_colonne SET DEFAULT expression ALTER VIEW [ IF EXISTS ] nom ALTER [ COLUMN ] nom_colonne DROP DEFAULT ALTER VIEW [ IF EXISTS ] nom OWNER TO { nouveau_propriétaire | CURRENT_USER | SESSION_USER } +ALTER VIEW [ IF EXISTS ] name RENAME [ COLUMN ] column_name TO new_column_name ALTER VIEW [ IF EXISTS ] nom RENAME TO nouveau_nom ALTER VIEW [ IF EXISTS ] nom SET SCHEMA nouveau_schéma ALTER VIEW [ IF EXISTS ] nom SET ( nom_option [= valeur_option] [, ... ] ) @@ -67,6 +68,24 @@ ALTER VIEW [ IF EXISTS ] nom RESET + + column_name + + + Name of an existing column. + + + + + + new_column_name + + + New name for an existing column. + + + + IF EXISTS @@ -127,7 +146,7 @@ ALTER VIEW [ IF EXISTS ] nom RESET actuellement supportées sont : - check_option (string) + check_option (enum) Modifie l'option de vérification d'une value. Les valeurs autorisées diff --git a/postgresql/ref/clusterdb.xml b/postgresql/ref/clusterdb.xml index beeb88f5e..66ab7fe10 100644 --- a/postgresql/ref/clusterdb.xml +++ b/postgresql/ref/clusterdb.xml @@ -17,7 +17,7 @@ - clusterdb + clusterdb Grouper une base de données PostgreSQL diff --git a/postgresql/ref/commit_prepared.xml b/postgresql/ref/commit_prepared.xml index d1f85e160..dee9831d8 100644 --- a/postgresql/ref/commit_prepared.xml +++ b/postgresql/ref/commit_prepared.xml @@ -70,7 +70,7 @@ - Exemples + Exemples Valider la transaction identifiée par foobar : diff --git a/postgresql/ref/create_aggregate.xml b/postgresql/ref/create_aggregate.xml index ac5e77a6c..9cc2969de 100644 --- a/postgresql/ref/create_aggregate.xml +++ b/postgresql/ref/create_aggregate.xml @@ -441,8 +441,7 @@ CREATE [ OR REPLACE ] AGGREGATE nom modifie pas ses arguments. READ_ONLY indique qu'il n'y a pas de modification. Les deux autres valeurs indiquent la valeur d'état de transition pourrait changer. Voir ci-dessous pour plus de + linkend="sql-createaggregate-notes"/> ci-dessous pour plus de détail. La valeur par défaut est READ_ONLY, sauf pour les agrégats à ensemble ordonné dont la valeur par défaut est READ_WRITE. @@ -678,8 +677,8 @@ CREATE [ OR REPLACE ] AGGREGATE nom - - Notes + + Notes Dans les paramètres qui indiquent les noms de fonction de support, vous diff --git a/postgresql/ref/create_conversion.xml b/postgresql/ref/create_conversion.xml index 6e6686618..ca8e9b774 100644 --- a/postgresql/ref/create_conversion.xml +++ b/postgresql/ref/create_conversion.xml @@ -32,11 +32,15 @@ CREATE CONVERSION définit une nouvelle conversion entre - les encodages de caractères. De plus, les conversions marquées - DEFAULT peuvent être utilisées pour automatiser une conversion d'encodage - entre le client et le serveur. Pour cela, deux conversions, - de l'encodage A vers l'encodage B et de l'encodage B vers - l'encodage A, doivent être définies. + les encodages de caractères. + + + + Les conversions marquées DEFAULT peuvent être utilisées + pour automatiser une conversion d'encodage entre le client et le serveur. + Pour cela, deux conversions, de l'encodage A vers l'encodage B + et de l'encodage B vers l'encodage A, doivent être + définies. @@ -125,6 +129,13 @@ Notes + + Neither the source nor the destination encoding can + be SQL_ASCII, as the server's behavior for cases + involving the SQL_ASCII encoding is + hard-wired. + + DROP CONVERSION est utilisé pour supprimer une conversion utilisateur. diff --git a/postgresql/ref/create_database.xml b/postgresql/ref/create_database.xml index b49ca5985..ada321135 100644 --- a/postgresql/ref/create_database.xml +++ b/postgresql/ref/create_database.xml @@ -26,6 +26,7 @@ [ [ WITH ] [ OWNER [=] nom_utilisateur ] [ TEMPLATE [=] modèle ] [ ENCODING [=] codage ] + [ LOCALE [=] locale ] [ LC_COLLATE [=] lc_collate ] [ LC_CTYPE [=] lc_ctype ] [ TABLESPACE [=] tablespace ] @@ -55,7 +56,8 @@ être utilisé en écrivant TEMPLATE nom. En particulier, la clause TEMPLATE template0 permet de créer une base de - données vierge qui ne contient que les objets standards pré-définis dans + données vierge (one where no user-defined objects exist and where the system + objects have not been altered) qui ne contient que les objets standards pré-définis dans la version de PostgreSQL utilisée. C'est utile pour ne pas copier les objets locaux ajoutés à template1. @@ -111,6 +113,26 @@ + + locale + + + This is a shortcut for setting LC_COLLATE + and LC_CTYPE at once. If you specify this, + you cannot specify either of those parameters. + + + + The other locale settings , , , and + are not fixed per database and are not + set by this command. If you want to make them the default for a + specific database, you can use ALTER DATABASE + ... SET. + + + + lc_collate @@ -298,7 +320,7 @@ Pour créer une base music avec une locale différente : CREATE DATABASE music - LC_COLLATE 'sv_SE.utf8' LC_CTYPE 'sv_SE.utf8' + LOCALE 'sv_SE.utf8' TEMPLATE template0; Dans cet exemple, la clause TEMPLATE template0 est @@ -312,7 +334,7 @@ CREATE DATABASE music et un jeu de caractère différent : +CREATE DATABASE music2 - LC_COLLATE 'sv_SE.iso885915' LC_CTYPE 'sv_SE.iso885915' + LOCALE 'sv_SE.iso885915' ENCODING LATIN9 TEMPLATE template0; diff --git a/postgresql/ref/create_extension.xml b/postgresql/ref/create_extension.xml index 1b4927806..5c345df65 100644 --- a/postgresql/ref/create_extension.xml +++ b/postgresql/ref/create_extension.xml @@ -20,7 +20,6 @@ CREATE EXTENSION [ IF NOT EXISTS ] nom_extension [ WITH ] [ SCHEMA nom_schema ] [ VERSION version ] - [ FROM ancienne_version ] [ CASCADE ] @@ -35,12 +34,24 @@ CREATE EXTENSION [ IF NOT EXISTS ] nom_extension< - Charger une extension consiste essentiellement à exécuter le script de l'extension. - Ce script va créer dans la plupart des cas de nouveaux objets SQL - comme des fonctions, des types de données, des opérateurs et des méthodes d'indexation. - La commande CREATE EXTENSION enregistre en supplément les identifiants - de chacun des objets créés, permettant ainsi de les supprimer lorsque la commande - DROP EXTENSION est appelée. + The user who runs CREATE EXTENSION becomes the + owner of the extension for purposes of later privilege checks, and + normally also becomes the owner of any objects created by the + extension's script. + + + + Loading an extension ordinarily requires the same privileges that would + be required to create its component objects. For many extensions this + means superuser privileges are needed. + However, if the extension is marked trusted in + its control file, then it can be installed by any user who has + CREATE privilege on the current database. + In this case the extension object itself will be owned by the calling + user, but the contained objects will be owned by the bootstrap superuser + (unless the extension's script explicitly assigns them to the calling + user). This configuration gives the calling user the right to drop the + extension, but not to modify individual objects within it. @@ -127,31 +138,6 @@ CREATE EXTENSION [ IF NOT EXISTS ] nom_extension< - - ancienne_version - - - L'option FROM ancienne_version - doit être spécifiée si et seulement s'il s'agit de convertir un module ancienne génération - (qui est en fait une simple collection d'objets non empaquetée) en extension. - Cette option modifie le comportement de la commande CREATE EXTENSION - pour exécuter un script d'installation alternatif qui incorpore les objets existant dans - l'extension, plutôt que de créer de nouveaux objets. Il faut prendre garde à ce que - SCHEMA spécifie le schéma qui contient ces objets pré-existant. - - - - La valeur à utiliser pour le paramètre ancienne_version - est déterminée par l'auteur de l'extension et peut varier s'il existe plus d'une version - du module ancienne génération qui peut évoluer en une extension. - Concernant les modules additionnels fournis en standard avant - PostgreSQL 9.1, il est nécessaire d'utiliser - la valeur unpackaged pour le paramètre - ancienne_version pour les faire évoluer en extension. - - - - CASCADE @@ -201,16 +187,6 @@ CREATE EXTENSION [ IF NOT EXISTS ] nom_extension< CREATE EXTENSION hstore; - - - Mettre à jour le module pré-9.1 hstore sous la forme - d'une extension : - -CREATE EXTENSION hstore SCHEMA public FROM unpackaged; - - Prenez garde à bien spécifier le schéma vers lequel vous souhaitez installer - les objets de hstore. - diff --git a/postgresql/ref/create_foreign_table.xml b/postgresql/ref/create_foreign_table.xml index 623779576..4e6c6381a 100644 --- a/postgresql/ref/create_foreign_table.xml +++ b/postgresql/ref/create_foreign_table.xml @@ -405,7 +405,7 @@ CREATE FOREIGN TABLE measurement_y2016m07 - Compatibilité + Compatibilité La commande CREATE FOREIGN TABLE est conforme au standard diff --git a/postgresql/ref/create_index.xml b/postgresql/ref/create_index.xml index 85fde4f0b..1d1545126 100644 --- a/postgresql/ref/create_index.xml +++ b/postgresql/ref/create_index.xml @@ -23,7 +23,7 @@ CREATE [ UNIQUE ] INDEX [ CONCURRENTLY ] [ [ IF NOT EXISTS ] nom ] ON [ ONLY ] nom_table [ USING méthode ] - ( { nom_colonne | ( expression ) } [ COLLATE collation ] [ classeop ] [ ASC | DESC ] [ NULLS { FIRST | LAST } ] [, ...] ) + ( { nom_colonne | ( expression ) } [ COLLATE collation ] [ classeop [ ( parametre_classeop = valeur [, ... ] ) ] ] [ ASC | DESC ] [ NULLS { FIRST | LAST } ] [, ...] ) [ INCLUDE ( nom_colonne [, ...] ) ] [ WITH ( parametre_stockage = valeur [, ... ] ) ] [ TABLESPACE nom_espacelogique ] @@ -132,8 +132,7 @@ la construction d'un index standard verrouille les écritures (mais pas les lectures) sur la table jusqu'à la fin de la construction. Il est nécessaire d'avoir quelques connaissances avant d'utiliser - cette option — voir . + cette option — voir . @@ -179,6 +178,8 @@ type de l'index l'insertion de données échouera. Dans tous les cas, les colonnes non clés dupliquent les données de la table et augmentent la taille de l'index, ralentissant potentiellement les recherches. + Furthermore, B-tree deduplication is never used with indexes + that have a non-key column. @@ -294,6 +295,15 @@ + + opclass_parameter + + + The name of an operator class parameter. See below for details. + + + + ASC @@ -339,8 +349,8 @@ Le nom d'un paramètre de stockage spécifique à la méthode d'indexage. - Voir pour les détails. + Voir pour les + détails. @@ -367,8 +377,8 @@ - - Paramètres de stockage des index + + Paramètres de stockage des index La clause WITH optionnelle spécifie des @@ -380,7 +390,7 @@ - fillfactor + fillfactor (integer) paramètre de stockage fillfactor @@ -408,12 +418,40 @@ - Les index B-tree acceptent en option ce paramètre : + Les index B-tree acceptent aussi ces paramètres : + + deduplicate_items (boolean) + + deduplicate_items storage parameter + + + + + Controls usage of the B-tree deduplication technique described + in . Set to + ON or OFF to enable or + disable the optimization. (Alternative spellings of + ON and OFF are allowed as + described in .) The default is + ON. + + + + + Turning deduplicate_items off via + ALTER INDEX prevents future insertions from + triggering deduplication, but does not in itself make existing + posting list tuples use the standard tuple representation. + + + + + - vacuum_cleanup_index_scale_factor + vacuum_cleanup_index_scale_factor (floating point) vacuum_cleanup_index_scale_factor paramètre de stockage @@ -434,7 +472,7 @@ - buffering + buffering (enum) paramètre de stockage buffering @@ -460,7 +498,7 @@ - fastupdate + fastupdate (boolean) paramètre de stockage fastupdate @@ -469,11 +507,8 @@ Ce paramètre régit l'utilisation de la technique de mise à jour rapide décrite dans . C'est un paramètre - booléen : - ON active la mise à jour rapide, OFF - la désactive. (Les autres façons d'écrire ON et - OFF sont autorisées, comme décrit dans - .) La valeur par défaut est + booléen : ON active la mise à jour rapide, + OFF la désactive. La valeur par défaut est ON. @@ -492,7 +527,7 @@ - gin_pending_list_limit + gin_pending_list_limit (integer) gin_pending_list_limit paramètre de stockage @@ -513,7 +548,7 @@ - pages_per_range + pages_per_range (integer) paramètre de stockage pages_per_range @@ -529,7 +564,7 @@ - autosummarize + autosummarize (boolean) paramètre de stockage autosummarize @@ -567,8 +602,8 @@ - - Construire des index en parallèle + + Construire des index en parallèle index @@ -666,13 +701,13 @@ Les constructions d'index standards permettent d'autres constructions - d'index en simultanée sur la même table mais seul une construction d'index - en parallèle peut survenir sur une table à un même moment. Dans les deux - cas, la modification du schéma de la table n'est pas autorisé pendant la - construction de l'index. Une autre différence est qu'une commande - CREATE INDEX normale peut être réalisée à l'intérieur - d'un bloc de transactions alors que CREATE INDEX - CONCURRENTLY ne le peut pas. + d'index en simultanée sur la même table mais seul une construction d'index + en parallèle peut survenir sur une table à un même moment. Dans les deux + cas, la modification du schéma de la table n'est pas autorisé pendant la + construction de l'index. Une autre différence est qu'une commande + CREATE INDEX normale peut être réalisée à l'intérieur + d'un bloc de transactions alors que CREATE INDEX + CONCURRENTLY ne le peut pas. @@ -704,7 +739,8 @@ - Une classe d'opérateur peut être spécifiée pour + Une classe d'opérateur with optional parameters + peut être spécifiée pour chaque colonne d'un index. La classe d'opérateur identifie les opérateurs à utiliser par l'index pour cette colonne. Par exemple, un index B-tree sur des entiers codés sur quatre octets utilise la classe @@ -863,6 +899,13 @@ CREATE UNIQUE INDEX title_idx ON films (title) INCLUDE (director, rating); + + To create a B-Tree index with deduplication disabled: + +CREATE INDEX title_idx ON films (title) WITH (deduplicate_items = off); + + + Pour créer un index sur l'expression lower(titre), permettant une recherche efficace quelque soit la casse : diff --git a/postgresql/ref/create_language.xml b/postgresql/ref/create_language.xml index 607702cbb..7a905b597 100644 --- a/postgresql/ref/create_language.xml +++ b/postgresql/ref/create_language.xml @@ -22,10 +22,9 @@ - CREATE [ OR REPLACE ] [ PROCEDURAL ] LANGUAGE nom -CREATE [ OR REPLACE ] [ TRUSTED ] [ PROCEDURAL ] LANGUAGE nom + CREATE [ OR REPLACE ] [ TRUSTED ] [ PROCEDURAL ] LANGUAGE nom HANDLER gestionnaire_appel [ VALIDATOR fonction_validation ] - +CREATE [ OR REPLACE ] [ TRUSTED ] [ PROCEDURAL ] LANGUAGE nom @@ -38,21 +37,6 @@ CREATE [ OR REPLACE ] [ TRUSTED ] [ PROCEDURAL ] LANGUAGE , - et non pas avec CREATE LANGUAGE. L'utilisation directe - de CREATE LANGUAGE devrait maintenant être réservée - aux scripts d'installation d'extension. Si vous avez un langage - nu dans votre base de données, peut-être comme résultat - d'une mise à jour, vous pouvez le convertir en extension en utilisant - CREATE EXTENSION nom_langage FROM - unpackaged. - - - CREATE LANGUAGE associe en fait le nom du langage à un ou des fonctions de gestion qui sont responsable de l'exécution des fonctions @@ -61,55 +45,32 @@ CREATE [ OR REPLACE ] [ TRUSTED ] [ PROCEDURAL ] LANGUAGE pg_pltemplate - pour déterminer les paramètres adéquats. Dans la seconde, l'utilisateur - fournit les paramètres du langage avec son nom. Cette - forme peut être utilisée pour créer un langage non défini dans - pg_pltemplate. Cette approche est cependant obsolète. + CREATE OR REPLACE LANGUAGE will either create a + new language, or replace an existing definition. If the language + already exists, its parameters are updated according to the command, + but the language's ownership and permissions settings do not change, + and any existing functions written in the language are assumed to still + be valid. - Si le serveur trouve une entrée dans le catalogue - pg_pltemplate pour le nom donné, il utilise les données du - catalogue quand bien même la commande incluerait les paramètres du langage. Ce - comportement simplifie le chargement des anciens fichiers de sauvegarde ; ceux-ci - présentent le risque de contenir des informations caduques sur les fonctions de - support du langage. + Un utilisateur doit être un superutilisateur + PostgreSQL pour enregistrer un nouveau langage + or change an existing language's parameters. However, once the language is + created it is valid to assign ownership of it to a non-superuser, who may + then drop it, change its permissions, rename it, or assign it to a new + owner. (Do not, however, assign ownership of the underlying C functions to + a non-superuser; that would create a privilege escalation path for that + user.) - Habituellement, l'utilisateur doit être un superutilisateur - PostgreSQL pour enregistrer un nouveau langage. - Néanmoins, le propriétaire d'une base de données peut enregistrer un - nouveau langage dans sa base si le langage est listé dans le catalogue - pg_pltemplate et est marqué comme autorisé à - être créé par les propriétaires de base - (tmpldbacreate à true). La valeur par défaut est - que les langages de confiance peuvent être créés par les propriétaires de - base de données, mais cela peut être modifié par les superutilisateurs en - ajustant le contenu de pg_pltemplate. Le créateur - d'un langage devient son propriétaire et peut ensuite le supprimer, le - renommer ou le donner à un autre propriétaire. - - - - CREATE OR REPLACE LANGUAGE créera un nouveau langage ou - remplacera une définition existante. Si le langage existe déjà, ces - paramètres sont mis à jour suivant les valeurs indiquées ou prises de - pg_pltemplate mais le propriétaire et les droits - du langage ne sont pas modifiés et toutes fonctions existantes créées dans - le langage sont supposées être toujours valides. En plus des droits - nécessaires pour créer un langage, un utilisateur doit être superutilisateur - ou propriétaire du langage existant. Le cas REPLACE a - pour but principal d'être utilisé pour s'assurer que le langage existe. Si - le langage a une entrée pg_pltemplate alors - REPLACE ne modifiera rien sur la définition existante, - sauf dans le cas inhabituel où l'entrée - pg_pltemplate a été modifiée depuis que le langage - a été créé. + The form of CREATE LANGUAGE that does not supply + any handler function is obsolete. For backwards compatibility with + old dump files, it is interpreted as CREATE EXTENSION. + That will work if the language has been packaged into an extension of + the same name, which is the conventional way to set up procedural + languages. @@ -219,12 +180,6 @@ CREATE [ OR REPLACE ] [ TRUSTED ] [ PROCEDURAL ] LANGUAGE @@ -255,47 +210,24 @@ CREATE [ OR REPLACE ] [ TRUSTED ] [ PROCEDURAL ] LANGUAGE Exemples - Tout langage procédural standard sera préférentiellement créé ainsi : - CREATE LANGUAGE plperl; - - - - - Pour un langage inconnu du catalogue pg_pltemplate, une - séquence comme celle-ci est nécessaire : + A minimal sequence for creating a new procedural language is: CREATE FUNCTION plsample_call_handler() RETURNS language_handler AS '$libdir/plsample' LANGUAGE C; CREATE LANGUAGE plsample HANDLER plsample_call_handler; + Typically that would be written in an extension's creation script, + and users would do this to install the extension: + +CREATE EXTENSION plsample; + diff --git a/postgresql/ref/create_materialized_view.xml b/postgresql/ref/create_materialized_view.xml index 7d26b0f6c..98084bba7 100644 --- a/postgresql/ref/create_materialized_view.xml +++ b/postgresql/ref/create_materialized_view.xml @@ -105,11 +105,11 @@ CREATE MATERIALIZED VIEW [ IF NOT EXISTS ] nom_table Cette clause indique les paramètres de stockage optionnels pour la nouvelle - vue matérialisée ; voir pour plus + vue matérialisée ; voir + dans la documentation de pour plus d'informations. Tous les paramètres supportés pour CREATE - TABLE sont aussi supportés par CREATE - MATERIALIZED VIEW. + TABLE sont aussi supportés par CREATE + MATERIALIZED VIEW. Voir pour plus d'informations. diff --git a/postgresql/ref/create_opclass.xml b/postgresql/ref/create_opclass.xml index 0cd4703f9..521c871fb 100644 --- a/postgresql/ref/create_opclass.xml +++ b/postgresql/ref/create_opclass.xml @@ -167,17 +167,18 @@ - Dans une clause FUNCTION, le (ou les) types de données - en opérande, supporté par la fonction, si différent du type de données en - entrée de la fonction (pour les fonctions de comparaison d'index B-tree - et les fonctions des index hash) ou le type de - données de la classe (pour les fonctions de support du tri pour les index - B-tree et pour toutes les fonctions des opérateurs de classe des index - GiST, SP-GiST, GIN et BRIN). Ces valeurs par défaut sont correctes. Du coup, - op_type n'a pas besoin d'être - précisé dans les clauses FUNCTION, sauf dans le cas de - la fonction de support du tri pour les index B-tree qui doit supporter - les comparaisons inter-types. + Dans une clause FUNCTION, le (ou les) types de + données en opérande, supporté par la fonction, si différent du type de + données en entrée de la fonction (pour les fonctions de comparaison + d'index B-tree et les fonctions des index hash) ou le type de données de + la classe (pour les fonctions de support du tri pour les index B-tree, + B-tree equal image functions et pour toutes les fonctions des opérateurs + de classe des index GiST, SP-GiST, GIN et BRIN). Ces valeurs par défaut + sont correctes. Du coup, op_type n'a pas besoin d'être précisé + dans les clauses FUNCTION, sauf dans le cas de la + fonction de support du tri pour les index B-tree qui doit supporter les + comparaisons inter-types. diff --git a/postgresql/ref/create_publication.xml b/postgresql/ref/create_publication.xml index 67e162ba6..55a2e9d5c 100644 --- a/postgresql/ref/create_publication.xml +++ b/postgresql/ref/create_publication.xml @@ -72,16 +72,27 @@ CREATE PUBLICATION nom en a) est ajoutées. De manière facultative, * peut être spécifié après le nom de la table pour indiquer explicitement que les tables descendantes doivent être incluses. + This does not apply to a partitioned table, however. The partitions of + a partitioned table are always implicitly considered part of the + publication, so they are never explicitly added to the publication. - Seules les tables persistentes peuvent faire partie d'une publication. - Les tables temporaires, tables non journalisées, tables distantes, vues - matérialisées, vues standard ainsi que les tables partitionnées ne + Seules les tables persistentes et les tables partitionnées peuvent faire + partie d'une publication. Les tables temporaires, tables non + journalisées, tables distantes, vues matérialisées et vues standard ne peuvent pas faire partie d'une publication. Pour répliquer une table partitionnée, il faut ajouter chaque partition individuellement à la publication. + + + When a partitioned table is added to a publication, all of its existing + and future partitions are implicitly considered to be part of the + publication. So, even operations that are performed directly on a + partition are also published via publications that its ancestors are + part of. + @@ -119,6 +130,26 @@ CREATE PUBLICATION nom + + + publish_via_partition_root (boolean) + + + This parameter determines whether changes in a partitioned table (or + on its partitions) contained in the publication will be published + using the identity and schema of the partitioned table rather than + that of the individual partitions that are actually changed; the + latter is the default. Enabling this allows the changes to be + replicated into a non-partitioned table or a partitioned table + consisting of a different set of partitions. + + + + If this is enabled, TRUNCATE operations performed + directly on partitions are not replicated. + + + diff --git a/postgresql/ref/create_table.xml b/postgresql/ref/create_table.xml index 442e4194b..8af27977f 100644 --- a/postgresql/ref/create_table.xml +++ b/postgresql/ref/create_table.xml @@ -892,16 +892,27 @@ contrainte EXCLUDE peut valoir : Les clauses ALWAYS et BY DEFAULT - déterminent comment la valeur de la séquence est prioritaire par rapport - à une valeur définie par l'utilisateur dans un ordre - INSERT. Si ALWAYS est spécifié, - une valeur définie par l'utilisateur ne sera acceptée que si l'ordre - INSERT spécifie OVERRIDING SYSTEM - VALUE. Si BY DEFAULT est spécifié, alors la - valeur spécifiée par l'utilisateur est prioritaire. Voir pour plus de détails. (Avec une commande - COPY, les valeurs spécifiées par l'utilisateur sont - toujours utilisée quelque soit ce paramètre.) + determine how explicitly user-specified values are handled in + INSERT and UPDATE commands. + + + + In an INSERT command, if ALWAYS is + selected, a user-specified value is only accepted if the + INSERT statement specifies OVERRIDING SYSTEM + VALUE. If BY DEFAULT is selected, then the + user-specified value takes precedence. See + for details. (In the COPY command, user-specified + values are always used regardless of this setting.) + + + + In an UPDATE command, if ALWAYS is + selected, any update of the column to any value other than + DEFAULT will be rejected. If BY + DEFAULT is selected, the column can be updated normally. + (There is no OVERRIDING clause for the + UPDATE command.) @@ -1352,8 +1363,8 @@ contrainte EXCLUDE peut valoir : - - Paramètres de stockage + + Paramètres de stockage paramètres de stockage @@ -1549,6 +1560,36 @@ contrainte EXCLUDE peut valoir : + + autovacuum_vacuum_insert_threshold, toast.autovacuum_vacuum_insert_threshold (integer) + + autovacuum_vacuum_insert_threshold + storage parameter + + + + + Per-table value for + parameter. The special value of -1 may be used to disable insert vacuums on the table. + + + + + + autovacuum_vacuum_insert_scale_factor, toast.autovacuum_vacuum_insert_scale_factor (float4) + + autovacuum_vacuum_insert_scale_factor + storage parameter + + + + + Per-table value for + parameter. + + + + autovacuum_analyze_threshold (integer) @@ -2086,8 +2127,8 @@ CREATE TABLE cities_partdef - - Compatibilité + + Compatibilité La commande CREATE TABLE est conforme au standard diff --git a/postgresql/ref/create_tablespace.xml b/postgresql/ref/create_tablespace.xml index f125c3247..5f6bbbfa2 100644 --- a/postgresql/ref/create_tablespace.xml +++ b/postgresql/ref/create_tablespace.xml @@ -106,17 +106,20 @@ option_tablespace - Un paramètre à configurer ou réinitialiser pour un tablespace. Actuellement, - les seuls paramètres disponibles sont seq_page_cost - et random_page_cost et - effective_io_concurrency. Configurer un de ces paramètres - pour un tablespace particulier va surcharger l'estimation habituelle du - planificateur pour le coût de lecture des pages sur les tables de ce - tablespace (voir , - et - ). Ceci peut se révéler utile si - un des tablespaces est situé sur un disque plus rapide ou plus lent que - le reste du système d'entrées/sorties. + Un paramètre à configurer ou réinitialiser pour un tablespace. + Actuellement, les seuls paramètres disponibles sont + seq_page_cost et random_page_cost, + effective_io_concurrency et + maintenance_io_concurrency. Setting these values for + a particular tablespace will override the planner's usual estimate of + the cost of reading pages from tables in that tablespace, and the + executor's prefetching behavior, as established by the configuration + parameters of the same name (see , + , , ). Ceci peut se révéler utile + si un des tablespaces est situé sur un disque plus rapide ou plus lent + que le reste du système d'entrées/sorties. diff --git a/postgresql/ref/create_trigger.xml b/postgresql/ref/create_trigger.xml index aedce58ea..b9320fcef 100644 --- a/postgresql/ref/create_trigger.xml +++ b/postgresql/ref/create_trigger.xml @@ -538,8 +538,8 @@ UPDATE OF nom_colonne_1 [, nom_colonne_2 création de triggers identiques sur toutes les partitions existantes. De plus, toute partition créée ou attachée après coup contiendra elle-aussi un trigger identique. Si la partition est détachée de son parent, le trigger - est supprimé. Les triggers sur les tables partitionnées ne peuvent être que - des triggers AFTER. + est supprimé. Les triggers sur les tables partitionnées ne peuvent pas être + des triggers INSTEAD OF. @@ -570,16 +570,6 @@ UPDATE OF nom_colonne_1 [, nom_colonne_2 l'instruction en une action sur la table de base de la vue pour que les triggers niveau instruction de la table de base soient déclenchés. - - - Dans les versions de PostgreSQL antérieures à la - 7.3, il était nécessaire de déclarer un type opaque de - retour pour les fonctions déclencheur, plutôt que trigger. Pour - pouvoir charger d'anciens fichiers de sauvegarde, - CREATE TRIGGER accepte qu'une fonction déclare une valeur de retour de type - opaque, mais il affiche un message d'avertissement et change le - type de retour déclaré en trigger. - diff --git a/postgresql/ref/create_type.xml b/postgresql/ref/create_type.xml index 187d4dc97..d8013486e 100644 --- a/postgresql/ref/create_type.xml +++ b/postgresql/ref/create_type.xml @@ -837,18 +837,6 @@ CREATE TYPE nom squelettes de type erronés, un squelette sera seulement créé quand la fonction en entrée est écrit en C. - - - Dans les versions de PostgreSQL antérieures à la - 7.3, la création d'un type coquille était habituellement évitée en remplaçant - les références des fonctions au nom du type par le pseudotype opaque. - Les arguments cstring et les résultats étaient également déclarés - opaque. Pour supporter le chargement d'anciens - fichiers de sauvegarde, CREATE TYPE accepte les fonctions - d'entrées/sorties déclarées avec le pseudotype opaque mais un - message d'avertissement est affiché. La déclaration de la fonction est - également modifiée pour utiliser les bons types. - diff --git a/postgresql/ref/create_view.xml b/postgresql/ref/create_view.xml index 5321356f7..878d910a5 100644 --- a/postgresql/ref/create_view.xml +++ b/postgresql/ref/create_view.xml @@ -130,7 +130,7 @@ CREATE VIEW [ schéma . ] nom - check_option (string) + check_option (enum) Ce paramètre peut avoir soit local soit @@ -290,7 +290,7 @@ propriétaire). -Vues modifiables +Vues modifiables vues modifiables diff --git a/postgresql/ref/declare.xml b/postgresql/ref/declare.xml index 0f72ff45a..266f6d6fa 100644 --- a/postgresql/ref/declare.xml +++ b/postgresql/ref/declare.xml @@ -142,8 +142,8 @@ - - Notes + + Notes Les curseurs normaux renvoient les données au format texte, le même que diff --git a/postgresql/ref/delete.xml b/postgresql/ref/delete.xml index 5105b98ff..cd31f1175 100644 --- a/postgresql/ref/delete.xml +++ b/postgresql/ref/delete.xml @@ -124,8 +124,7 @@ DELETE FROM [ ONLY ] nom_table [ * Une expression de table, qui permet de faire apparaître des colonnes d'autres tables dans la condition WHERE. Cela utilise - la même syntaxe que la clause d'une instruction + la même syntaxe que la clause d'une instruction SELECT ; par exemple, un alias peut être spécifié pour un nom de table. Ne pas répéter la table cible comme un element_from sauf si vous diff --git a/postgresql/ref/do.xml b/postgresql/ref/do.xml index b19504630..1d0dbd314 100644 --- a/postgresql/ref/do.xml +++ b/postgresql/ref/do.xml @@ -97,7 +97,7 @@ DO [ LANGUAGE nom_langage ] - Exemples + Exemples Donner les droits sur toutes les vues du schéma public au rôle webuser : diff --git a/postgresql/ref/drop_database.xml b/postgresql/ref/drop_database.xml index e74da53fd..4a5a0f2da 100644 --- a/postgresql/ref/drop_database.xml +++ b/postgresql/ref/drop_database.xml @@ -22,23 +22,28 @@ - DROP DATABASE [ IF EXISTS ] nom - + DROP DATABASE [ IF EXISTS ] name [ [ WITH ] ( option [, ...] ) ] + +where option can be: + + FORCE + Description - La commande DROP DATABASE détruit une base de données. Elle supprime - les entrées du catalogue pour la base et le répertoire - contenant les données. Elle ne peut être exécutée que par le propriétaire de - la base de données ou le superutilisateur. - De plus, elle ne peut être exécutée si quelqu'un est - connecté sur la base de données cible, y compris l'utilisateur effectuant la - demande de suppression. (On peut se connecter à + La commande DROP DATABASE détruit une base de données. + Elle supprime les entrées du catalogue pour la base et le répertoire + contenant les données. Elle ne peut être exécutée que par le propriétaire + de la base de données ou le superutilisateur. De plus, elle ne peut être + exécutée si vous êtes connecté sur la base de données cible, y compris + l'utilisateur effectuant la demande de suppression. (On peut se connecter à postgres ou à toute autre base de données pour lancer - cette commande.) + cette commande.) Also, if anyone else is connected to the target database, + this command will fail unless you use the FORCE option + described below. @@ -69,6 +74,24 @@ + + + FORCE + + + Attempt to terminate all existing connections to the target database. + It doesn't terminate if prepared transactions, active logical replication + slots or subscriptions are present in the target database. + + + This will fail if the current user has no permissions to terminate other + connections. Required permissions are the same as with + pg_terminate_backend, described in + . This will also fail if we + are not able to terminate connections. + + + diff --git a/postgresql/ref/dropdb.xml b/postgresql/ref/dropdb.xml index 6ac86f0af..cfc900e4b 100644 --- a/postgresql/ref/dropdb.xml +++ b/postgresql/ref/dropdb.xml @@ -88,6 +88,18 @@ + + + + + + Attempt to terminate all existing connections to the target database + before dropping it. See for more + information on this option. + + + + diff --git a/postgresql/ref/explain.xml b/postgresql/ref/explain.xml index d1c66e7c5..d1156ea3d 100644 --- a/postgresql/ref/explain.xml +++ b/postgresql/ref/explain.xml @@ -42,6 +42,7 @@ EXPLAIN [ ANALYZE ] [ VERBOSE ] instructionboolean ] SETTINGS [ boolean ] BUFFERS [ boolean ] + WAL [ boolean ] TIMING [ boolean ] SUMMARY [ boolean ] FORMAT { TEXT | XML | JSON | YAML } @@ -197,6 +198,19 @@ ROLLBACK; + + WAL + + + Include information on WAL record generation. Specifically, include the + number of records, number of full page images (fpi) and amount of WAL + bytes generated. In text format, only non-zero values are printed. This + parameter may only be used when ANALYZE is also + enabled. It defaults to FALSE. + + + + TIMING diff --git a/postgresql/ref/insert.xml b/postgresql/ref/insert.xml index a21cec647..3b3ca4726 100644 --- a/postgresql/ref/insert.xml +++ b/postgresql/ref/insert.xml @@ -79,8 +79,8 @@ INSERT INTO nom_table [ AS ON CONFLICT peut être utilisé pour indiquer une action alternative lorsqu'une erreur sur une contrainte unique ou une - contrainte d'exclusion est levée (voir ci-dessous). + contrainte d'exclusion est levée (voir + ci-dessous). @@ -136,7 +136,7 @@ INSERT INTO nom_table [ AS Paramètres - Insertion + Insertion Cette section concerne les paramètres qui peuvent être utilisés @@ -218,10 +218,19 @@ INSERT INTO nom_table [ AS OVERRIDING SYSTEM VALUE - Sans cette clause, spécifier une valeur explicite (autre que - (DEFAULT) pour une colonne d'identité définie comme - GENERATED ALWAYS retourne une erreur. Cette clause - passe outre cette restriction. restriction. + If this clause is specified, then any values supplied for identity + columns will override the default sequence-generated values. + + + + For an identity column defined as GENERATED ALWAYS, + it is an error to insert an explicit value (other than + DEFAULT) without specifying either + OVERRIDING SYSTEM VALUE or OVERRIDING USER + VALUE. (For an identity column defined as + GENERATED BY DEFAULT, OVERRIDING SYSTEM + VALUE is the normal behavior and specifying it does nothing, + but PostgreSQL allows it as an extension.) @@ -231,8 +240,7 @@ INSERT INTO nom_table [ AS Si cette clause est spécifiée, alors toute valeur fournir pour les - colonnes d'identité définies comme GENERATED BY - DEFAULT sont ignorées et les valeurs par défaut générée + colonnes d'identité sont ignorées et les valeurs par défaut générée par la séquence sont appliquées. @@ -252,7 +260,8 @@ INSERT INTO nom_table [ AS DEFAULT VALUES - Toutes les colonnes seront remplies avec leur valeur par défaut. + Toutes les colonnes seront remplies avec leur valeur par défaut, as if + DEFAULT were explicitly specified for each column. (Une clause OVERRIDING n'est pas permise dans cette forme.) @@ -272,7 +281,11 @@ INSERT INTO nom_table [ AS DEFAULT - La colonne correspondante sera remplie avec sa valeur par défaut. + La colonne correspondante sera remplie avec sa valeur par défaut. An + identity column will be filled with a new value generated by the + associated sequence. For a generated column, specifying this is + permitted but merely specifies the normal behavior of computing the + column from its generation expression. @@ -314,8 +327,8 @@ INSERT INTO nom_table [ AS - - Clause <literal>ON CONFLICT</literal> + + Clause <literal>ON CONFLICT</literal> UPSERT diff --git a/postgresql/ref/listen.xml b/postgresql/ref/listen.xml index d545c58cb..2b34830d3 100644 --- a/postgresql/ref/listen.xml +++ b/postgresql/ref/listen.xml @@ -64,12 +64,6 @@ lancer LISTEN ou UNLISTEN directement. Tous les détails se trouvent dans la documentation de l'interface utilisée. - - - décrit - plus en détails l'utilisation de LISTEN et - NOTIFY. - @@ -101,6 +95,29 @@ Une transaction qui a exécuté LISTEN ne peut pas être préparée pour la validation en deux phases. + + + There is a race condition when first setting up a listening session: + if concurrently-committing transactions are sending notify events, + exactly which of those will the newly listening session receive? + The answer is that the session will receive all events committed after + an instant during the transaction's commit step. But that is slightly + later than any database state that the transaction could have observed + in queries. This leads to the following rule for + using LISTEN: first execute (and commit!) that + command, then in a new transaction inspect the database state as needed + by the application logic, then rely on notifications to find out about + subsequent changes to the database state. The first few received + notifications might refer to updates already observed in the initial + database inspection, but this is usually harmless. + + + + + contains a more extensive + discussion of the use of LISTEN and + NOTIFY. + diff --git a/postgresql/ref/lock.xml b/postgresql/ref/lock.xml index d2047dc55..841f29dfc 100644 --- a/postgresql/ref/lock.xml +++ b/postgresql/ref/lock.xml @@ -209,7 +209,7 @@ informations sur la façon d'acquérir un vrai verrou de niveau ligne, voir et - dans la documentation de référence de SELECT. + dans la documentation de référence de . diff --git a/postgresql/ref/notify.xml b/postgresql/ref/notify.xml index f4ebaeb93..4c31bfaab 100644 --- a/postgresql/ref/notify.xml +++ b/postgresql/ref/notify.xml @@ -103,8 +103,8 @@ Si le même nom de canal est signalé plusieurs fois à partir de la même - transaction avec des chaînes de charge identiques, le serveur de bases - de données peut décider de délivrer une seule notification. Par contre, les + transaction avec des chaînes de charge identiques, only one instance of the + notification event is delivered to listeners. Par contre, les notifications avec des chaînes de charges distinctes seront toujours délivrées par des notifications distinctes. De façon similaire, les notifications provenant de différentes transactions ne seront jamais diff --git a/postgresql/ref/pg_basebackup.xml b/postgresql/ref/pg_basebackup.xml index 7109a9764..601a383aa 100644 --- a/postgresql/ref/pg_basebackup.xml +++ b/postgresql/ref/pg_basebackup.xml @@ -116,6 +116,13 @@ + + + Whenever pg_basebackup is taking a base + backup, the pg_stat_progress_basebackup + view will report the progress of the backup. + See for details. + @@ -495,13 +502,6 @@ cible estimée va augmenter quand il dépasse l'estimation totale sans les journaux de transactions. - - - Quand cette option est activée, le serveur commencera par calculer la - taille totale des bases de données, puis enverra leur contenu. Du coup, - cela peut rendre la sauvegarde plus longue, en particulier plus longue - avant l'envoi de la première donnée. - @@ -591,6 +591,94 @@ + + + + + + This option prevents the server from estimating the total + amount of backup data that will be streamed, resulting in the + backup_total column in the + pg_stat_progress_basebackup + to be NULL. + + + Without this option, the backup will start by enumerating + the size of the entire database, and then go back and send + the actual contents. This may make the backup take slightly + longer, and in particular it will take longer before the first + data is sent. This option is useful to avoid such estimation + time if it's too long. + + + This option is not allowed when using . + + + + + + + + + Disables generation of a backup manifest. If this option is not + specified, the server will generate and send a backup manifest + which can be verified using . + The manifest is a list of every file present in the backup with the + exception of any WAL files that may be included. It also stores the + size, last modification time, and an optional checksum for each file. + + + + + + + + + Forces all filenames in the backup manifest to be hex-encoded. + If this option is not specified, only non-UTF8 filenames are + hex-encoded. This option is mostly intended to test that tools which + read a backup manifest file properly handle this case. + + + + + + + + + Specifies the checksum algorithm that should be applied to each file + included in the backup manifest. Currently, the available + algorithms are NONE, CRC32C, + SHA224, SHA256, + SHA384, and SHA512. + The default is CRC32C. + + + If NONE is selected, the backup manifest will + not contain any checksums. Otherwise, it will contain a checksum + of each file in the backup using the specified algorithm. In addition, + the manifest will always contain a SHA256 + checksum of its own contents. The SHA algorithms + are significantly more CPU-intensive than CRC32C, + so selecting one of them may increase the time required to complete + the backup. + + + Using a SHA hash function provides a cryptographically secure digest + of each file for users who wish to verify that the backup has not been + tampered with, while the CRC32C algorithm provides a checksum which is + much faster to calculate and good at catching errors due to accidental + changes but is not resistant to targeted modifications. Note that, to + be useful against an adversary who has access to the backup, the backup + manifest would need to be stored securely elsewhere or otherwise + verified not to have been modified since the backup was taken. + + + can be used to check the + integrity of a backup against the backup manifest. + + + diff --git a/postgresql/ref/pg_dump.xml b/postgresql/ref/pg_dump.xml index 8afa4a1fd..ed5218395 100644 --- a/postgresql/ref/pg_dump.xml +++ b/postgresql/ref/pg_dump.xml @@ -412,8 +412,7 @@ sélectionnés en utilisant des caractères joker dans le modèle. Lors de l'utilisation de ces caractères, il faut faire attention à placer le modèle entre guillemets, si nécessaire, pour empêcher le shell de - remplacer les jokers ; voir . + remplacer les jokers ; voir . @@ -555,7 +554,7 @@ modèle. Lors de l'utilisation de ces caractères, il faut faire attention à placer le modèle entre guillemets, si nécessaire, pour empêcher le shell de remplacer les jokers ; voir . + linkend="pg-dump-examples"/>. @@ -808,6 +807,36 @@ + + + + + Dump the data for any foreign table with a foreign server + matching foreignserver + pattern. Multiple foreign servers can be selected by writing multiple + switches. + Also, the foreignserver parameter is + interpreted as a pattern according to the same rules used by + psql's \d commands + (see below), + so multiple foreign servers can also be selected by writing wildcard characters + in the pattern. When using wildcards, be careful to quote the pattern + if needed to prevent the shell from expanding the wildcards; see + below. + The only exception is that an empty pattern is disallowed. + + + + + When is specified, + pg_dump does not check that the foreign + table is writeable. Therefore, there is no guarantee that the + results of a foreign table dump can be successfully restored. + + + + + @@ -1409,8 +1438,8 @@ - - Exemples + + Exemples Sauvegarder une base appelée ma_base dans un script @@ -1514,7 +1543,7 @@ Pour indiquer un nom qui comporte des majuscules dans les options et assimilées, il faut ajouter des guillemets - doubles ; sinon le nom est converti en minuscules (voir). Les guillemets doubles sont interprétés par le shell et doivent donc être placés entre guillemets. Du coup, pour sauvegarder une seule table dont le nom comporte des majuscules, on utilise diff --git a/postgresql/ref/pg_dumpall.xml b/postgresql/ref/pg_dumpall.xml index 504c77291..9decea6db 100644 --- a/postgresql/ref/pg_dumpall.xml +++ b/postgresql/ref/pg_dumpall.xml @@ -321,7 +321,7 @@ class="parameter">motif est interprété comme un motif suivant les mêmes règles que les méta-commandes \d de psql (voir ), donc + linkend="app-psql-patterns"/>), donc plusieurs bases de données peuvent aussi être exclues en écrivant les caractères joker dans le motif. En utilisant les caractères joker, faite attention à bien mettre entre guillemets le motif si nécessaire diff --git a/postgresql/ref/pg_rewind.xml b/postgresql/ref/pg_rewind.xml index e9e67c0a0..2a438cdfc 100644 --- a/postgresql/ref/pg_rewind.xml +++ b/postgresql/ref/pg_rewind.xml @@ -47,17 +47,16 @@ - Le résultat est le même que lorsqu'on remplace le répertoire de données - cible avec celui de la source. Seuls les blocs modifiés des fichiers des - relations déjà existants sont copiés, tous les autres fichiers sont copiés - intégralement, fichiers de configurations compris. L'avantage de - pg_rewind par rapport à la réalisation d'une - nouvelle sauvegarde de base, ou l'utilisation d'un outil tel que - rsync, est que - pg_rewind n'a pas besoin de lire tous les blocs - non modifiés des fichiers de l'ancienne instance. Cela rend l'opération - éminement plus rapide lorsqu'on est face à une volumétrie conséquente et - qu'il a peu de différences entre les deux instances. + After a successful rewind, the state of the target data directory is + analogous to a base backup of the source data directory. Unlike taking + a new base backup or using a tool like rsync, + pg_rewind does not require comparing or copying + unchanged relation blocks in the cluster. Only changed blocks from existing + relation files are copied; all other files, including new relation files, + configuration files, and WAL segments, are copied in full. As such the + rewind operation is significantly faster than other approaches when the + database is large and only a small fraction of blocks differ between the + clusters. @@ -73,26 +72,26 @@ fichiers WAL peuvent ne plus être présents dans le répertoire pg_wal. Dans ce cas, ils peuvent être copiés à la main depuis les fichiers WAL archivés vers le répertoire - pg_wal ou récupérés au démarrage en configurant ou . + pg_wal or run + pg_rewind with the -c option to + automatically retrieve them from the WAL archive. L'utilisation de pg_rewind n'est pas limitée au failover : un serveur standby peut être promu, écrire quelques transactions, puis transformé de nouveau en standby avec cet outil. - Lorsque l'instance cible est démarrée pour la première fois après avoir - utilisé pg_rewind, elle va se mettre en mode de - restauration (recovery) et va rejouer tous - les fichiers WAL générés par l'instance source depuis la bascule. Si - certains fichiers WAL ne sont plus disponibles sur la source lorsque - pg_rewind est en cours, ils ne peuvent donc plus - être copiés par la session pg_rewind. Il est - alors nécessaire de faire en sorte qu'ils puissent être disponibles lorsque - le serveur cible sera démarré. Cela est possible en créant un fichier - recovery.signal dans le répertoire des données cible - et en configurant correctement le paramètre dans le fichier + After running pg_rewind, WAL replay needs to + complete for the data directory to be in a consistent state. When the + target server is started again it will enter archive recovery and replay + all WAL generated in the source server from the last checkpoint before + the point of divergence. If some of the WAL was no longer available in the + source server when pg_rewind was run, and + therefore could not be copied by the pg_rewind + session, it must be made available when the target server is started. + This can be done by creating a recovery.signal file + in the target data directory and by configuring a suitable + in postgresql.conf. @@ -115,6 +114,15 @@ recommandé. + + As pg_rewind copies configuration files + entirely from the source, it may be required to correct the configuration + used for recovery before restarting the target server, especially if + the target is reintroduced as a standby of the source. If you restart + the server after the rewind operation has finished but without configuring + recovery, the target may again diverge from the primary. + + pg_rewind échouera immédiatement s'il trouve des fichiers qu'il ne peut pas modifier. Ceci peut arriver quand les @@ -176,6 +184,36 @@ + + + + + pg_rewind requires that the target server + is cleanly shut down before rewinding. By default, if the target server + is not shut down cleanly, pg_rewind starts + the target server in single-user mode to complete crash recovery first, + and stops it. + By passing this option, pg_rewind skips + this and errors out immediately if the server is not cleanly shut + down. Users are expected to handle the situation themselves in that + case. + + + + + + + + + + Create standby.signal and append connection + settings to postgresql.auto.conf in the output + directory. --source-server is mandatory with + this option. + + + + @@ -214,6 +252,19 @@ + + + + + + Use restore_command defined in the target cluster + configuration to retrieve WAL files from the WAL archive if these + files are no longer available in the pg_wal + directory. + + + + @@ -314,7 +365,10 @@ GRANT EXECUTE ON function pg_catalog.pg_read_binary_file(text, bigint, bigint, b chaque enregistrement dans les journaux de transactions, enregistrer chaque bloc de données modifié. Ceci a pour résultat une liste de tous les blocs de données modifiés dans l'instance cible, après la séparation - avec l'instance source. + avec l'instance source. If some of the WAL files are no longer + available, try re-running pg_rewind with + the option to search for the missing files in + the WAL archive. @@ -324,37 +378,48 @@ GRANT EXECUTE ON function pg_catalog.pg_read_binary_file(text, bigint, bigint, b cible, soit en utilisant un accès direct au système de fichiers () soit en SQL (). + Relation files are now in a state equivalent to the moment of the last + completed checkpoint prior to the point at which the WAL timelines of the + source and target diverged plus the current state on the source of any + blocks changed on the target after that divergence. - Copier tous les autres fichiers, tels que pg_xact - et les fichiers de configuration de l'instance source vers l'instance - cible (sauf les fichiers des relations). De façon similaire aux - sauvegardes de base, le contenu des répertoires - pg_dynshmem/, pg_notify/, - pg_replslot/, pg_serial/, - pg_snapshots/, pg_stat_tmp/et - pg_subtrans/ sont omis des données copiées à partir - de l'instance source. Tout fichier ou répertoire commençant par - pgsql_tmp est omis, ainsi que - backup_label, tablespace_map, + Copy all other files, including new relation files, WAL segments, + pg_xact, and configuration files from the source + cluster to the target cluster. Similarly to base backups, the contents + of the directories pg_dynshmem/, + pg_notify/, pg_replslot/, + pg_serial/, pg_snapshots/, + pg_stat_tmp/, and pg_subtrans/ + are omitted from the data copied from the source cluster. The files + backup_label, + tablespace_map, pg_internal.init, - postmaster.opts et - postmaster.pid. + postmaster.opts, and + postmaster.pid, as well as any file or directory + beginning with pgsql_tmp, are omitted. + + + + + + Create a backup_label file to begin WAL replay at + the checkpoint created at failover and configure the + pg_control file with a minimum consistency LSN + defined as the result of pg_current_wal_insert_lsn() + when rewinding from a live source or the last checkpoint LSN when + rewinding from a stopped source. - Appliquer les enregistrements des journaux de transactions provenant de - l'instance source, en commençant à partir du checkpoint créé au moment - du failover. (En fait, pg_rewind n'applique - pas les journaux de transactions. Il crée simplement un fichier - backup_label qui fera en sorte que PostgreSQL - démarre en rejouant les enregistrements des journaux de transactions à - partir de ce checkpoint.) + When starting the target, PostgreSQL replays + all the required WAL, resulting in a data directory in a consistent + state. diff --git a/postgresql/ref/pg_verifybackup.xml b/postgresql/ref/pg_verifybackup.xml new file mode 100644 index 000000000..bc30c4628 --- /dev/null +++ b/postgresql/ref/pg_verifybackup.xml @@ -0,0 +1,292 @@ + + + + + + pg_verifybackup + + + + pg_verifybackup + 1 + Application + + + + pg_verifybackup + verify the integrity of a base backup of a + PostgreSQL cluster + + + + + pg_verifybackup + option + + + + + + Description + + + pg_verifybackup is used to check the + integrity of a database cluster backup taken using + pg_basebackup against a + backup_manifest generated by the server at the time + of the backup. The backup must be stored in the "plain" + format; a "tar" format backup can be checked after extracting it. + + + + It is important to note that the validation which is performed by + pg_verifybackup does not and can not include + every check which will be performed by a running server when attempting + to make use of the backup. Even if you use this tool, you should still + perform test restores and verify that the resulting databases work as + expected and that they appear to contain the correct data. However, + pg_verifybackup can detect many problems + that commonly occur due to storage problems or user error. + + + + Backup verification proceeds in four stages. First, + pg_verifybackup reads the + backup_manifest file. If that file + does not exist, cannot be read, is malformed, or fails verification + against its own internal checksum, pg_verifybackup + will terminate with a fatal error. + + + + Second, pg_verifybackup will attempt to verify that + the data files currently stored on disk are exactly the same as the data + files which the server intended to send, with some exceptions that are + described below. Extra and missing files will be detected, with a few + exceptions. This step will ignore the presence or absence of, or any + modifications to, postgresql.auto.conf, + standby.signal, and recovery.signal, + because it is expected that these files may have been created or modified + as part of the process of taking the backup. It also won't complain about + a backup_manifest file in the target directory or + about anything inside pg_wal, even though these + files won't be listed in the backup manifest. Only files are checked; + the presence or absence of directories is not verified, except + indirectly: if a directory is missing, any files it should have contained + will necessarily also be missing. + + + + Next, pg_verifybackup will checksum all the files, + compare the checksums against the values in the manifest, and emit errors + for any files for which the computed checksum does not match the + checksum stored in the manifest. This step is not performed for any files + which produced errors in the previous step, since they are already known + to have problems. Also, files which were ignored in the previous step are + also ignored in this step. + + + + Finally, pg_verifybackup will use the manifest to + verify that the write-ahead log records which will be needed to recover + the backup are present and that they can be read and parsed. The + backup_manifest contains information about which + write-ahead log records will be needed, and + pg_verifybackup will use that information to + invoke pg_waldump to parse those write-ahed log + records. The --quiet flag will be used, so that + pg_waldump will only report errors, without producing + any other output. While this level of verification is sufficient to + detect obvious problems such as a missing file or one whose internal + checksums do not match, they aren't extensive enough to detect every + possible problem that might occur when attempting to recover. For + instance, a server bug that produces write-ahead log records that have + the correct checksums but specify nonsensical actions can't be detected + by this method. + + + + Note that if extra WAL files which are not required to recover the backup + are present, they will not be checked by this tool, although + a separate invocation of pg_waldump could be used for + that purpose. Also note that WAL verification is version-specific: you + must use the version of pg_verifybackup, and thus of + pg_waldump, which pertains to the backup being checked. + In contrast, the data file integrity checks should work with any version + of the server that generates a backup_manifest file. + + + + + Options + + + The following command-line options control the behavior. + + + + + + + + Exit as soon as a problem with the backup is detected. If this option + is not specified, pg_verifybackup will continue + checking the backup even after a problem has been detected, and will + report all problems detected as errors. + + + + + + + + + + Ignore the specified file or directory, which should be expressed + as a relative pathname, when comparing the list of data files + actually present in the backup to those listed in the + backup_manifest file. If a directory is + specified, this option affects the entire subtree rooted at that + location. Complaints about extra files, missing files, file size + differences, or checksum mismatches will be suppressed if the + relative pathname matches the specified pathname. This option + can be specified multiple times. + + + + + + + + + + Use the manifest file at the specified path, rather than one located + in the root of the backup directory. + + + + + + + + + + Don't attempt to parse write-ahead log data that will be needed + to recover from this backup. + + + + + + + + + + Don't print anything when a backup is successfully verified. + + + + + + + + + + Do not verify data file checksums. The presence or absence of + files and the sizes of those files will still be checked. This is + much faster, because the files themselves do not need to be read. + + + + + + + + + + Try to parse WAL files stored in the specified directory, rather than + in pg_wal. This may be useful if the backup is + stored in a separate location from the WAL archive. + + + + + + + + Other options are also available: + + + + + + + + Print the pg_verifybackup version and exit. + + + + + + + + + + Show help about pg_verifybackup command + line arguments, and exit. + + + + + + + + + + + Examples + + + To create a base backup of the server at mydbserver and + verify the integrity of the backup: + +$ pg_basebackup -h mydbserver -D /usr/local/pgsql/data +$ pg_verifybackup /usr/local/pgsql/data + + + + + To create a base backup of the server at mydbserver, move + the manifest somewhere outside the backup directory, and verify the + backup: + +$ pg_basebackup -h mydbserver -D /usr/local/pgsql/backup1234 +$ mv /usr/local/pgsql/backup1234/backup_manifest /my/secure/location/backup_manifest.1234 +$ pg_verifybackup -m /my/secure/location/backup_manifest.1234 /usr/local/pgsql/backup1234 + + + + + To verify a backup while ignoring a file that was added manually to the + backup directory, and also skipping checksum verification: + +$ pg_basebackup -h mydbserver -D /usr/local/pgsql/data +$ edit /usr/local/pgsql/data/note.to.self +$ pg_verifybackup --ignore=note.to.self --skip-checksums /usr/local/pgsql/data + + + + + + + See Also + + + + + + + diff --git a/postgresql/ref/pg_waldump.xml b/postgresql/ref/pg_waldump.xml index 1ec7ca04a..244c72467 100644 --- a/postgresql/ref/pg_waldump.xml +++ b/postgresql/ref/pg_waldump.xml @@ -134,6 +134,18 @@ PostgreSQL documentation + + + + + + Do not print any output, except for errors. This option can be useful + when you want to know whether a range of WAL records can be + successfully parsed but don't care about the record contents. + + + + diff --git a/postgresql/ref/pgbench.xml b/postgresql/ref/pgbench.xml index c7e7f2c26..dbd4fee85 100644 --- a/postgresql/ref/pgbench.xml +++ b/postgresql/ref/pgbench.xml @@ -213,12 +213,34 @@ pgbench options - g (Génère les données) + g or G (Generate data, client-side or server-side) Génère des données et les charge dans les tables standards, remplaçant toutes les données déjà présentes. + + With g (client-side data generation), + data is generated in pgbench client and then + sent to the server. This uses the client/server bandwidth + extensively through a COPY. + Using g causes logging to print one message + every 100,000 rows while generating data for the + pgbench_accounts table. + + + With G (server-side data generation), + only small queries are sent from the pgbench + client and then data is actually generated in the server. + No significant bandwidth is required for this variant, but + the server will do more work. + Using G causes logging not to print any progress + message while generating data. + + + The default initialization behavior uses client-side data + generation (equivalent to g). + @@ -286,11 +308,14 @@ pgbench options - Passe du mode verbeux au mode silencieux, en n'affichant - qu'un message toutes les 5 secondes. - Par défaut, on affiche un message toutes les 100 000 lignes, ce - qui engendre souvent plusieurs lignes - toutes les secondes (particulièrement sur du bon matériel) + Passe du mode verbeux au mode silencieux, en n'affichant qu'un message + toutes les 5 secondes. Par défaut, on affiche un message toutes les + 100 000 lignes, ce qui engendre souvent plusieurs lignes toutes + les secondes (particulièrement sur du bon matériel) + + + This setting has no effect if G is specified + in . @@ -337,6 +362,31 @@ pgbench options + + + + + Create a partitioned pgbench_accounts table with + NUM partitions of nearly equal size for + the scaled number of accounts. + Default is 0, meaning no partitioning. + + + + + + + + + Create a partitioned pgbench_accounts table with + NAME method. + Expected values are range or hash. + This option requires that is set to non-zero. + If unspecified, default is range. + + + + @@ -688,6 +738,16 @@ pgbench options + + scriptname + + + Show the actual code of builtin script scriptname + on stderr, and exit immediately. + + + + transactions @@ -943,6 +1003,13 @@ pgbench options d'environnement supportées par la libpq (voir ). + + + The environment variable PG_COLOR specifies whether to use + color in diagnostic messages. Possible values are + always, auto and + never. + @@ -1064,8 +1131,10 @@ pgbench options
- Variables automatiques + Variables automatiques de pgbench + + Variable @@ -1112,6 +1181,7 @@ pgbench options \gset [prefix] + \aset [prefix] @@ -1121,18 +1191,29 @@ pgbench options - Quand cette commande est utilisée, la requête SQL précédente doit + Quand the \gset command est utilisée, la requête SQL précédente doit renvoyer une ligne, dont les valeurs des colonnes sont enregistrées dans des variables nommées d'après les noms des colonnes et préfixées avec prefix si ce dernier argument est fourni. + + When the \aset command is used, all combined SQL queries + (separated by \;) have their columns stored into variables + named after column names, and prefixed with prefix + if provided. If a query returns no row, no assignment is made and the variable + can be tested for existence to detect this. If a query returns more than one + row, the last value is kept. + + L'exemple suivant place la balance finale du compte provenant de la première requête dans la variable abalance, et remplit les variables p_two et p_three avec les entiers provenant de la troisième requête. Les résultats de la deuxième requête sont ignorés. + The result of the two last combined queries are stored in variables + four and five. UPDATE pgbench_accounts SET abalance = abalance + :delta @@ -1141,6 +1222,7 @@ UPDATE pgbench_accounts -- compound of two queries SELECT 1 \; SELECT 2 AS two, 3 AS three \gset p_ +SELECT 4 AS four \; SELECT 5 AS five \aset @@ -1313,167 +1395,368 @@ SELECT 2 AS two, 3 AS three \gset p_ dans pgbench et peuvent être utilisés dans des expressions apparaissant dans \set. + The operators are listed in increasing precedence order. + Except as noted, operators taking two numeric inputs will produce + a double value if either input is double, otherwise they produce + an integer result. -
- Opérateurs pgbench par priorité croissante - - - - Opérateur - Description - Exemple - Résultat - - - - - OR - ou logique - 5 or 0 - TRUE - - - AND - et logique - 3 and 0 - FALSE - - - NOT - non logique - not false - TRUE - - - IS [NOT] (NULL|TRUE|FALSE) - tests de valeurs - 1 is null - FALSE - - - ISNULL|NOTNULL - tests sur NULL - 1 notnull - TRUE - - - = - est égal - 5 = 4 - FALSE - - - <> - n'est pas égal - 5 <> 4 - TRUE - - - != - n'est pas égal - 5 != 5 - FALSE - - - < - inférieur à - 5 < 4 - FALSE - - - <= - inférieur ou égal - 5 <= 4 - FALSE - - - > - plus grand que - 5 > 4 - TRUE - - - >= - plus grand ou égal - 5 >= 4 - TRUE - - - | - OU binaire sur entier - 1 | 2 - 3 - - - # - XOR binaire sur entier - 1 # 3 - 2 - - - & - ET binaire sur entier - 1 & 3 - 1 - - - ~ - NON binaire sur entier - ~ 1 - -2 - - - << - décalage binaire vers la gauche d'entier - 1 << 2 - 4 - - - >> - décalage binaire vers la droite d'entier - 8 >> 2 - 2 - - - + - addition - 5 + 4 - 9 - - - - - soustraction - 3 - 2.0 - 1.0 - - - * - multiplication - 5 * 4 - 20 - - - / - division (sur des entiers, tronque le résultat) - 5 / 3 - 1 - - - % - modulo - 3 % 2 - 1 - - - - - opposé - - 2.0 - -2.0 - - - -
+ + pgbench Operators + + + + + Operator + + + Description + + + Example(s) + + + + + + + + boolean OR boolean + boolean + + + Logical OR + + + 5 or 0 + TRUE + + + + + + boolean AND boolean + boolean + + + Logical AND + + + 3 and 0 + FALSE + + + + + + NOT boolean + boolean + + + Logical NOT + + + not false + TRUE + + + + + + boolean IS [NOT] (NULL|TRUE|FALSE) + boolean + + + Boolean value tests + + + 1 is null + FALSE + + + + + + value ISNULL|NOTNULL + boolean + + + Nullness tests + + + 1 notnull + TRUE + + + + + + number = number + boolean + + + Equal + + + 5 = 4 + FALSE + + + + + + number <> number + boolean + + + Not equal + + + 5 <> 4 + TRUE + + + + + + number != number + boolean + + + Not equal + + + 5 != 5 + FALSE + + + + + + number < number + boolean + + + Less than + + + 5 < 4 + FALSE + + + + + + number <= number + boolean + + + Less than or equal to + + + 5 <= 4 + FALSE + + + + + + number > number + boolean + + + Greater than + + + 5 > 4 + TRUE + + + + + + number >= number + boolean + + + Greater than or equal to + + + 5 >= 4 + TRUE + + + + + + integer | integer + integer + + + Bitwise OR + + + 1 | 2 + 3 + + + + + + integer # integer + integer + + + Bitwise XOR + + + 1 # 3 + 2 + + + + + + integer & integer + integer + + + Bitwise AND + + + 1 & 3 + 1 + + + + + + ~ integer + integer + + + Bitwise NOT + + + ~ 1 + -2 + + + + + + integer << integer + integer + + + Bitwise shift left + + + 1 << 2 + 4 + + + + + + integer >> integer + integer + + + Bitwise shift right + + + 8 >> 2 + 2 + + + + + + number + number + number + + + Addition + + + 5 + 4 + 9 + + + + + + number - number + number + + + Subtraction + + + 3 - 2.0 + 1.0 + + + + + + number * number + number + + + Multiplication + + + 5 * 4 + 20 + + + + + + number / number + number + + + Division (truncates the result towards zero if both inputs are integers) + + + 5 / 3 + 1 + + + + + + integer % integer + integer + + + Modulo (remainder) + + + 3 % 2 + 1 + + + + + + - number + number + + + Negation + + + - 2.0 + -2.0 + + + + +
@@ -1488,162 +1771,299 @@ SELECT 2 AS two, 3 AS three \gset p_ - Fonctions pgbench - - - - - - + pgbench Functions + - Fonction - Type de retour - Description - Exemple - Résultat + + Function + + + Description + + + Example(s) + + - abs(a) - identique à a - valeur absolue - abs(-17) - 17 + + abs ( number ) + same type as input + + + Absolute value + + + abs(-17) + 17 + + - debug(a) - identique à a - affiche a dans stderr, - et retourne a - debug(5432.1) - 5432.1 + + debug ( number ) + same type as input + + + Prints the argument to stderr, + and returns the argument. + + + debug(5432.1) + 5432.1 + + - double(i) - double - convertit en double précision - double(5432) - 5432.0 + + double ( number ) + double + + + Casts to double. + + + double(5432) + 5432.0 + + - exp(x) - double - exponentielle - exp(1.0) - 2.718281828459045 + + exp ( number ) + double + + + Exponential (e raised to the given power) + + + exp(1.0) + 2.718281828459045 + + - greatest(a [, ... ] ) - double si a est double, sinon entier - la plus grande valeur parmi les arguments - greatest(5, 4, 3, 2) - 5 + + greatest ( number , ... ) + double if any argument is double, else integer + + + Selects the largest value among the arguments. + + + greatest(5, 4, 3, 2) + 5 + + - hash(a [, seed ] ) - integer - alias pour hash_murmur2() - hash(10, 5432) - -5817877081768721676 + + hash ( value , seed ) + integer + + + This is an alias for hash_murmur2. + + + hash(10, 5432) + -5817877081768721676 + + - hash_fnv1a(a [, seed ] ) - integer - FNV-1a hash - hash_fnv1a(10, 5432) - -7793829335365542153 + + hash_fnv1a ( value , seed ) + integer + + + Computes FNV-1a hash. + + + hash_fnv1a(10, 5432) + -7793829335365542153 + + - hash_murmur2(a [, seed ] ) - integer - MurmurHash2 hash - hash_murmur2(10, 5432) - -5817877081768721676 + + hash_murmur2 ( value , seed ) + integer + + + Computes MurmurHash2 hash. + + + hash_murmur2(10, 5432) + -5817877081768721676 + + - int(x) - integer - convertit en entier - int(5.4 + 3.8) - 9 + + int ( number ) + integer + + + Casts to integer. + + + int(5.4 + 3.8) + 9 + + - least(a [, ... ] ) - double si a est double, sinon entier - plus petite valeur parmi les arguments - least(5, 4, 3, 2.1) - 2.1 + + least ( number , ... ) + double if any argument is double, else integer + + + Selects the smallest value among the arguments. + + + least(5, 4, 3, 2.1) + 2.1 + + - ln(x) - double - logarithme naturel - ln(2.718281828459045) - 1.0 + + ln ( number ) + double + + + Natural logarithm + + + ln(2.718281828459045) + 1.0 + + - mod(i, j) - integer - modulo - mod(54, 32) - 22 + +mod ( integer, integer ) + integer + + + Modulo (remainder) + + + mod(54, 32) + 22 + + - pi() - double - constante PI - pi() - 3.14159265358979323846 + + pi () + double + + + Approximate value of π + + + pi() + 3.14159265358979323846 + + - pow(x, y), power(x, y) - double - exponentielle - pow(2.0, 10), power(2.0, 10) - 1024.0 + + pow ( x, y ) + double + + + power ( x, y ) + double + + + x raised to the power of y + + + pow(2.0, 10) + 1024.0 + + - random(lb, ub) - integer - entier aléatoire uniformément distribué dans [lb, ub] - random(1, 10) - un entier entre 1 et 10 + + random ( lb, ub ) + integer + + + Computes a uniformly-distributed random integer in [lb, + ub]. + + + random(1, 10) + an integer between 1 and 10 + + - random_exponential(lb, ub, parameter) - integer - entier aléatoire distribué exponentiellement dans [lb, ub], - voir plus bas - random_exponential(1, 10, 3.0) - un entier entre 1 et 10 + + random_exponential ( lb, ub, parameter ) + integer + + + Computes an exponentially-distributed random integer in [lb, + ub], see below. + + + random_exponential(1, 10, 3.0) + an integer between 1 and 10 + + - random_gaussian(lb, ub, parameter) - integer - entier aléatoire distribué de façon gaussienne dans [lb, ub], - voir plus bas - random_gaussian(1, 10, 2.5) - un entier entre 1 et 10 + + random_gaussian ( lb, ub, parameter ) + integer + + + Computes a gaussian-distributed random integer in [lb, + ub], see below. + + + random_gaussian(1, 10, 2.5) + an integer between 1 and 10 + + - random_zipfian (lb, ub, parameter) - integer - entier aléatoire distribué selon la loi de Zipf dans [lb, ub], - voir plus bas - random_zipfian(1, 10, 1.5) - un entier entre 1 et 10 + + random_zipfian ( lb, ub, parameter ) + integer + + + Computes a Zipfian-distributed random integer in [lb, + ub], see below. + + + random_zipfian(1, 10, 1.5) + an integer between 1 and 10 + + - sqrt(x) - double - racine carrée - sqrt(2.0) - 1.414213562 + + sqrt ( number ) + double + + + Square root + + + sqrt(2.0) + 1.414213562 + - +
@@ -1906,7 +2326,7 @@ f(x) = PHI(2.0 * parameter * (x - mu) / (max - min + 1)) / journaux utilisent un format quelque peu différent : -début_intervalle nombre_de_transations somme_latence somme_latence_2 latence_minimum latence_maximum somme_retard somme_retard_2 retard_min retard_max transactions_ignorées +début_intervalle nombre_de_transations&zwsp; somme_latence somme_latence_2 latence_minimum latence_maximum&zwsp; somme_retard somme_retard_2 retard_min retard_max transactions_ignorées début_intervalle est le début de diff --git a/postgresql/ref/pgupgrade.xml b/postgresql/ref/pgupgrade.xml index e5be38044..ef6cdb217 100644 --- a/postgresql/ref/pgupgrade.xml +++ b/postgresql/ref/pgupgrade.xml @@ -97,6 +97,7 @@ repertoire_executables repertoire_executables le nouveau répertoire des exécutables PostgreSQL ; + default is the directory where pg_upgrade resides; variable d'environnement PGBINNEW @@ -855,9 +856,17 @@ psql --username=postgres --file=script.sql postgres pg_upgrade ne supporte pas la mise à jour de bases de données contenant des colonnes de table utilisant les types de données systèmes référençant les OID, nommés reg* : - regproc, regprocedure, regoper, - regoperator, regconfig et - regdictionary. (regtype peut être mis à jour.) + + regcollation + regconfig + regdictionary + regnamespace + regoper + regoperator + regproc + regprocedure + + (regclass, regrole, and regtype can be upgraded.) diff --git a/postgresql/ref/postgres-ref.xml b/postgresql/ref/postgres-ref.xml index aa629aff7..8ef8c4665 100644 --- a/postgresql/ref/postgres-ref.xml +++ b/postgresql/ref/postgres-ref.xml @@ -536,8 +536,7 @@ Les options suivantes s'appliquent uniquement en mode mono-utilisateur - (voir ). + (voir ci-dessous). @@ -759,8 +758,8 @@ - - Mode simple utilisateur + + Mode simple utilisateur Pour démarrer un serveur en mode mono-utilisateur, utilisez une commande diff --git a/postgresql/ref/postmaster.xml b/postgresql/ref/postmaster.xml index 9f77ff424..b1875abe7 100644 --- a/postgresql/ref/postmaster.xml +++ b/postgresql/ref/postmaster.xml @@ -16,7 +16,7 @@ - postmaster + postmaster Serveur de bases de données PostgreSQL diff --git a/postgresql/ref/prepare.xml b/postgresql/ref/prepare.xml index d1986696d..e431292ad 100644 --- a/postgresql/ref/prepare.xml +++ b/postgresql/ref/prepare.xml @@ -215,8 +215,8 @@ EXPLAIN EXECUTE nom(valeurs_parametres - - Exemples + + Exemples Crée une instruction préparée pour une instruction INSERT, puis l'exécute : diff --git a/postgresql/ref/prepare_transaction.xml b/postgresql/ref/prepare_transaction.xml index 95446e696..6f56d5045 100644 --- a/postgresql/ref/prepare_transaction.xml +++ b/postgresql/ref/prepare_transaction.xml @@ -153,7 +153,7 @@ - Exemples + Exemples Préparer la transaction en cours pour une validation en deux phases en utilisant foobar comme identifiant de transaction : diff --git a/postgresql/ref/psql-ref.xml b/postgresql/ref/psql-ref.xml index 7cc928b1b..d8f2a1b86 100644 --- a/postgresql/ref/psql-ref.xml +++ b/postgresql/ref/psql-ref.xml @@ -857,7 +857,7 @@ basetest=> Si un deux-points sans guillemets (:) suivi d'un nom de variable psql apparaît dans un argument, il est remplacé par la valeur de la variable, comme décrit dans . + linkend="app-psql-interpolation"/>. Les formes :'variable_name' et :"variable_name" décrites ici fonctionnent également. La syntaxe @@ -1223,7 +1223,7 @@ basetest=> et déclencheurs associés sont aussi affichés. Pour les tables distantes, le serveur distant associé est aussi affiché. (Ce qui correspond au motif est défini dans - + ci-dessous.) @@ -1294,6 +1294,97 @@ basetest=> + + + \dAc[+] + [access-method-pattern + [input-type-pattern]] + + + + + Lists operator classes + (see ). + If access-method-pattern + is specified, only operator classes associated with access methods whose + names match the pattern are listed. + If input-type-pattern + is specified, only operator classes associated with input types whose + names match the pattern are listed. + If + is appended to the command name, each operator + class is listed with its associated operator family and owner. + + + + + + + \dAf[+] + [access-method-pattern + [input-type-pattern]] + + + + + Lists operator families + (see ). + If access-method-pattern + is specified, only operator families associated with access methods whose + names match the pattern are listed. + If input-type-pattern + is specified, only operator families associated with input types whose + names match the pattern are listed. + If + is appended to the command name, each operator + family is listed with its owner. + + + + + + + \dAo[+] + [access-method-pattern + [operator-family-pattern]] + + + + + + Lists operators associated with operator families + (). + If access-method-pattern + is specified, only members of operator families associated with access + methods whose names match the pattern are listed. + If input-type-pattern + is specified, only members of operator families whose names match the + pattern are listed. + If + is appended to the command name, each operator + is listed with its strategy number, purpose and sort operator family. + + + + + + + \dAp[+] + [access-method-pattern + [operator-family-pattern]] + + + + + Lists procedures associated with operator families + (). + If access-method-pattern + is specified, only members of operator families associated with access + methods whose names match the pattern are listed. + If input-type-pattern + is specified, only members of operator families whose names match the + pattern are listed. + + + + \db[+] [ motif ] @@ -1428,10 +1519,11 @@ basetest=> séquence, table et vue. Vous pouvez indiquer n'importe quelle combinaison de ces lettres, dans n'importe quel ordre, pour obtenir la liste de tous les objets - de ces types. Par exemple, \dit liste les index et - tables. Si + est ajouté à la fin de la commande, chaque - objet est listé avec sa taille physique sur disque et sa description - associée s'il y en a une. + de ces types. Par exemple, \dti liste les index et + tables. Si + est ajouté à la fin de la commande, + chaque objet est listé avec son statut de persistence (permanent, + temporaire, non journalisé), sa taille physique sur disque et sa + description associée s'il y en a une. Si motif est spécifié, seuls les objets dont les noms correspondent au motif sont listés. Par défaut, seuls les objets créés par les utilisateurs sont affichés ; @@ -1901,8 +1993,9 @@ basetest=> habituelles de psql, où le tampon complet est traité comme une seule ligne. Toute requête complète est exécutée immédiatemment ; c'est-à-dire que si le tampon de requête contient ou se - termine par un point-virgule, tout ce qui précède est exécuté. Tout ce - qui reste attendra dans le tampon de requête ; en tapant point-virgule + termine par un point-virgule, tout ce qui précède est exécuté and removed from + the query buffer. Whatever remains in the query buffer is + redisplayed. En tapant point-virgule ou \g, le contenu sera envoyé, tandis que \r annulera en effaçant le tampon de requête. Traiter le buffer comme une ligne unique affecte principalement les @@ -1922,9 +2015,8 @@ basetest=> - Voir dans comment configurer - et personnaliser votre éditeur. + Voir dans , ci-dessous, comment + configurer et personnaliser votre éditeur. @@ -1936,14 +2028,14 @@ basetest=> class="parameter">texte [ ... ] - Affiche les arguments sur la sortie standard, séparés par un espace et - suivis par une nouvelle ligne. Ceci peut être utile pour intégrer des - informations sur la sortie des scripts. Par exemple : + Affiche les arguments évalués sur la sortie standard, séparés par des + espaces et suivis par une nouvelle ligne. Ceci peut être utile pour + intégrer des informations sur la sortie des scripts. Par exemple : => \echo `date` Tue Oct 26 21:40:57 CEST 1999 Si le premier argument est -n sans guillemets, - alors la fin de ligne n'est pas écrite. + alors la fin de ligne n'est pas écrite (nor is the first argument). @@ -1951,6 +2043,7 @@ Tue Oct 26 21:40:57 CEST 1999 Si vous utilisez la commande \o pour rediriger la sortie de la requête, vous pouvez aussi utiliser \qecho au lieu de cette commande. + See also \warn.
@@ -1966,8 +2059,8 @@ Tue Oct 26 21:40:57 CEST 1999 désignée sous la forme d'une commande CREATE OR REPLACE FUNCTION ou CREATE OR REPLACE PROCEDURE. L'édition est faite de la même façon que pour \edit. - Une fois l'éditeur fermé, la commande mise à jour attend - dans le tampon de requête ; tapez ; ou + Une fois l'éditeur fermé, la commande mise à jour is executed immediately + if you added a semicolon to it. Otherwise it is redisplayed ; tapez ; ou \g pour l'envoyer, ou \r pour l'annuler. @@ -2002,9 +2095,8 @@ Tue Oct 26 21:40:57 CEST 1999 - Voir dans la façon de configurer - et personnaliser votre éditeur. + Voir dans , ci-dessous, la façon + de configurer et personnaliser votre éditeur. @@ -2046,7 +2138,8 @@ Tue Oct 26 21:40:57 CEST 1999 la forme d'une commande CREATE OR REPLACE VIEW. L'édition se termine de la même façon que pour \edit. Après avoir quitté l'éditeur, la commande - mise à jour attend dans le tampon de requête ; saisir un point- + mise à jour is executed immediately + if you added a semicolon to it. Otherwise it is redisplayed ; saisir un point- virgule ou \g pour l'envoyer, ou \r pour annuler. @@ -2088,40 +2181,63 @@ Tue Oct 26 21:40:57 CEST 1999 - \g [ nomfichier ] - \g [ |commande ] + \g [ (option=value [...]) ] [ filename ] + \g [ (option=value [...]) ] [ |command ] - Envoie le tampon de requête en entrée vers le serveur et stocke en - option la sortie de la requête dans - nomfichier - ou envoie dans un tube (pipe) - la sortie vers un autre shell exécutant - commande au lieu de - l'exécuter comme habituellement. Le fichier ou la commande - n'est écrit que si la requête renvoit zéro ou plus - enregistrements, mais pas si la requête échoue ou s'il s'agit d'une - commande SQL ne renvoyant pas de données. - - - Si le tampon de la requête est vide, la dernière requête envoyée est - ré-exécutée à la place. En dehors de cette exception, \g - sans argument est essentiellement équivalent à un point-virgule. - Un \g avec argument est une alternative ponctuelle - à la commande \o. + Envoie le tampon de requête en entrée vers le serveur pour exécution. + + + + If parentheses appear after \g, they surround a + space-separated list of option=value formatting-option clauses, which + are interpreted in the same way as \pset + option value commands, but take effect only + for the duration of this query. In this list, spaces are not allowed + around = signs, but are required between option + clauses. If =value is omitted, the named + option is changed in the + same way as for \pset option with no explicit value. If a + filename or + |command argument is given, la commande + stocke en option la sortie de la requête dans nomfichier ou envoie dans un tube + (pipe) la sortie vers un autre shell + exécutant commande au + lieu de l'exécuter comme habituellement. Le fichier ou la commande + n'est écrit que si la requête renvoit zéro ou plus enregistrements, + mais pas si la requête échoue ou s'il s'agit d'une commande SQL ne + renvoyant pas de données. + + + + Si le tampon de la requête est vide, la dernière requête envoyée est + ré-exécutée à la place. En dehors de cette exception, + \g sans argument est essentiellement équivalent à + un point-virgule. With arguments, \g provides a + one-shot alternative to the \o + command, and additionally allows one-shot adjustments of the output + formatting options normally set by \pset. + + + + Quand le dernier argument débute par |, alors + l'intégralité du reste de la ligne est pris en tant que commande à exécuter et ni + l'interpolation des variables ni la substitution par guillemets + inverses n'y sont effectuées. Le reste de la ligne est simplement + passé littéralement au shell. - - Si l'argument débute par |, alors l'intégralité du - reste de la ligne est pris en tant que - commande à exécuter - et ni l'interpolation des variables ni la substitution par guillemets - inverses n'y sont effectuées. Le reste de la ligne est simplement - passé littéralement au shell. - - - - + + \gdesc @@ -2197,7 +2313,7 @@ CREATE INDEX Envoie la requête courante du tampon au serveur et stocke le résultat de la requête dans des variables psql (voir - ). + ci-dessous). La requête à exécuter doit renvoyer exactement une ligne. Chaque colonne de la ligne est enregistrée dans une variable séparée, nommée de la même façon que la colonne. Par exemple : @@ -2236,12 +2352,14 @@ bonjour 10 - \gx [ filename ] - \gx [ |command ] + \gx [ (option=value [...]) ] [ filename ] + \gx [ (option=value [...]) ] [ |command ] - \gx est équivalent à \g, mais - force l'affichage étendu pour cette requête. Voir \x. + \gx est équivalent à \g, except + that it forces expanded output mode for this query, as + if expanded=on were included in the list of + \pset options. See also \x. @@ -3074,8 +3192,7 @@ lo_import 152801 Des exemples d'utilisation de ces différents formats sont - disponibles dans la section . + disponibles dans la section . @@ -3167,17 +3284,16 @@ lo_import 152801 Les noms de variables valides peuvent contenir des lettres, chiffres - et tirets bas (_). Voir la section ci-dessous pour les détails. Les noms - des variables sont sensibles à la casse. + et tirets bas (_). Voir la section + ci-dessous pour les détails. Les noms des variables sont sensibles à la + casse. Certaines variables sont spéciales, dans le sens qu'elles contrôlent le - comportement de psql ou qu'elles sont mises - à jour pour refléter l'état de la connexion. Ces variables sont - documentées plus bas dans . + comportement de psql ou qu'elles sont mises + à jour pour refléter l'état de la connexion. Ces variables sont + documentées plus bas dans . @@ -3318,14 +3434,13 @@ testdb=> \setenv LESS -imx4F nom. - - La plupart des variables qui contrôlent le comportement de - psql ne peuvent pas être désinitialisées ; - la commande \unset est interprétée comme les - remettant à leur valeur par défaut. - Voir - plus bas. - + + La plupart des variables qui contrôlent le comportement de + psql ne peuvent pas être + désinitialisées ; la commande \unset est + interprétée comme les remettant à leur valeur par défaut. Voir plus bas. + @@ -3354,6 +3469,17 @@ testdb=> \setenv LESS -imx4F + + \warn text [ ... ] + + + This command is identical to \echo except + that the output will be written to psql's + standard error channel, rather than standard output. + + + + \watch [ seconds ] @@ -3490,8 +3616,8 @@ select 1\; select 2\; select 3; - - motifs + + Motifs motifs @@ -3585,8 +3711,8 @@ select 1\; select 2\; select 3; Fonctionnalités avancées - - Variables + + Variables psql fournit des fonctionnalités de substitution @@ -3609,8 +3735,7 @@ select 1\; select 2\; select 3; bar Ceci fonctionne avec les commandes SQL et les métacommandes standards. Il - y a plus de détails dans , ci-dessous. + y a plus de détails dans , ci-dessous. @@ -4034,7 +4159,7 @@ bar Ils spécifient à quoi doit ressembler l'invite psql. Voir + linkend="app-psql-prompting"/> ci-dessous. @@ -4177,8 +4302,8 @@ bar - - Interpolation <acronym>SQL</acronym> + + Interpolation <acronym>SQL</acronym> Une fonctionnalité clé des variables psql est @@ -4261,8 +4386,8 @@ basetest=> INSERT INTO ma_table VALUES (:'contenu'); - - Invite + + Invite Les invites psql peuvent être personnalisées @@ -4426,8 +4551,7 @@ basetest=> INSERT INTO ma_table VALUES (:'contenu'); La valeur de la variable nom de psql. - Voir la section pour les détails. + Voir la section pour les détails. @@ -4466,11 +4590,23 @@ basetest=> INSERT INTO ma_table VALUES (:'contenu'); + + %w + + + Whitespace of the same width as the most recent output of + PROMPT1. This can be used as a + PROMPT2 setting, so that multi-line statements are + aligned with the first line, but there is no visible secondary prompt. + + + + Pour insérer un pourcentage dans votre invite, écrivez %%. Les invites par défaut sont - '%/%R%# ' pour les invites 1 et 2 et + '%/%R%x%# ' pour les invites 1 et 2 et '>> ' pour l'invite 3. @@ -4513,8 +4649,8 @@ $endif - - Environnement + + Environnement @@ -4827,8 +4963,8 @@ PSQL_EDITOR_LINENUMBER_ARG='--line ' - - Exemples + + Exemples Le premier exemple montre comment envoyer une commande sur plusieurs lignes @@ -4932,7 +5068,28 @@ second | quatre - + + Also, these output format options can be set for just one query by using + \g: + +pierre@localhost basetest=> SELECT * FROM my_table +pierre@localhost basetest-> \g (format=aligned tuples_only=off expanded=on) +-[ RECORD 1 ]- +first | 1 +second | one +-[ RECORD 2 ]- +first | 2 +second | two +-[ RECORD 3 ]- +first | 3 +second | three +-[ RECORD 4 ]- +first | 4 +second | four + + + + En cas de besoin, les résultats de la requête peuvent être affichés dans une représentation croisée avec la commande \crosstabview : diff --git a/postgresql/ref/reindex.xml b/postgresql/ref/reindex.xml index 637378792..08f1af615 100644 --- a/postgresql/ref/reindex.xml +++ b/postgresql/ref/reindex.xml @@ -21,7 +21,12 @@ - REINDEX [ ( VERBOSE ) ] { INDEX | TABLE | SCHEMA | DATABASE | SYSTEM } [ CONCURRENTLY ] nom + REINDEX [ ( option [, ...] ) ] { INDEX | TABLE | SCHEMA | DATABASE | SYSTEM } [ CONCURRENTLY ] name + +where option can be one of: + + VERBOSE + @@ -163,8 +168,7 @@ alors qu'une réindexation standard empêche les écritures (mais pas les lectures) sur la table jusqu'à ce qu'elle soit terminée. Certaines mises en garde sont à prendre en compte lors de l'utilisation de cette option - — voir . + — voir . Pour les tables temporaires, REINDEX est toujours non @@ -267,8 +271,8 @@ séparément. - - Reconstruire des index en parallèle + + Reconstruire des index en parallèle index diff --git a/postgresql/ref/reindexdb.xml b/postgresql/ref/reindexdb.xml index 7b3ccc47f..80a4d241a 100644 --- a/postgresql/ref/reindexdb.xml +++ b/postgresql/ref/reindexdb.xml @@ -17,7 +17,7 @@ - reindexdb + reindexdb reindexe une base de données PostgreSQL @@ -170,6 +170,29 @@ + + + + + + Execute the reindex commands in parallel by running + njobs + commands simultaneously. This option reduces the time of the + processing but it also increases the load on the database server. + + + reindexdb will open + njobs connections to the + database, so make sure your + setting is high enough to accommodate all connections. + + + Note that this option is incompatible with the + and options. + + + + diff --git a/postgresql/ref/rollback_prepared.xml b/postgresql/ref/rollback_prepared.xml index e9f538831..428c18785 100644 --- a/postgresql/ref/rollback_prepared.xml +++ b/postgresql/ref/rollback_prepared.xml @@ -71,8 +71,8 @@ - - Exemples + + Exemples Annuler la transaction identifiée par foobar : diff --git a/postgresql/ref/select.xml b/postgresql/ref/select.xml index 2678f368e..fcb23785b 100644 --- a/postgresql/ref/select.xml +++ b/postgresql/ref/select.xml @@ -45,7 +45,7 @@ SELECT [ ALL | DISTINCT [ ON ( expressionexpression [ ASC | DESC | USING opérateur ] [ NULLS { FIRST | LAST } ] [, ...] ] [ LIMIT { nombre | ALL } ] [ OFFSET début ] [ ROW | ROWS ] ] - [ FETCH { FIRST | NEXT } [ total ] { ROW | ROWS } ONLY ] + [ FETCH { FIRST | NEXT } [ total ] { ROW | ROWS } { ONLY | WITH TIES } ] [ FOR { UPDATE | NO KEY UPDATE | SHARE | KEY SHARE } [ OF nom_table [, ...] ] [ NOWAIT | SKIP LOCKED ] [...] ] avec éléments_from qui peut être : @@ -149,31 +149,29 @@ TABLE [ ONLY ] nom_table [ * ] SELECT DISTINCT ON élimine les lignes qui correspondent sur toute l'expression spécifiée. SELECT ALL (l'option par défaut) retourne toutes les lignes, y compris les doublons. - (cf. ci-dessous.) + (cf. ci-dessous.) En utilisant les opérateurs UNION, - INTERSECT et EXCEPT, l'affichage de - plusieurs instructions SELECT peut être combiné pour - former un ensemble unique de résultats. L'opérateur UNION - renvoie toutes les lignes qui appartiennent, au moins, à l'un des ensembles de - résultats. L'opérateur INTERSECT renvoie toutes les - lignes qui sont dans tous les ensembles de résultats. - L'opérateur EXCEPT renvoie les lignes qui sont - présentes dans le premier ensemble de résultats mais pas dans le - deuxième. Dans les trois cas, les lignes dupliquées sont éliminées sauf - si ALL est spécifié. Le mot-clé supplémentaire - DISTINCT peut être ajouté pour signifier explicitement que - les lignes en doublon sont éliminées. Notez bien que DISTINCT est - là le comportement par défaut, bien que ALL soit - le défaut pour la commande SELECT. (Voir , et ci-dessous.) + INTERSECT et EXCEPT, l'affichage + de plusieurs instructions SELECT peut être combiné + pour former un ensemble unique de résultats. L'opérateur + UNION renvoie toutes les lignes qui appartiennent, au + moins, à l'un des ensembles de résultats. L'opérateur + INTERSECT renvoie toutes les lignes qui sont dans + tous les ensembles de résultats. L'opérateur EXCEPT + renvoie les lignes qui sont présentes dans le premier ensemble de + résultats mais pas dans le deuxième. Dans les trois cas, les lignes + dupliquées sont éliminées sauf si ALL est spécifié. + Le mot-clé supplémentaire DISTINCT peut être ajouté + pour signifier explicitement que les lignes en doublon sont éliminées. + Notez bien que DISTINCT est là le comportement par + défaut, bien que ALL soit le défaut pour la commande + SELECT. (Voir , et ci-dessous.) @@ -224,8 +222,8 @@ TABLE [ ONLY ] nom_table [ * ] Paramètres - - Clause <literal>WITH</literal> + + Clause <literal>WITH</literal> La clause WITH vous permet de spécifier une ou plusieurs @@ -344,8 +342,8 @@ TABLE [ ONLY ] nom_table [ * ] - - Clause <literal>FROM</literal> + + Clause <literal>FROM</literal> La clause FROM spécifie une ou plusieurs tables source @@ -733,8 +731,8 @@ TABLE [ ONLY ] nom_table [ * ] - - Clause <literal>WHERE</literal> + + Clause <literal>WHERE</literal> La clause WHERE optionnelle a la forme générale @@ -748,8 +746,8 @@ TABLE [ ONLY ] nom_table [ * ] - - Clause <literal>GROUP BY</literal> + + Clause <literal>GROUP BY</literal> La clause GROUP BY optionnelle a la forme générale @@ -823,8 +821,8 @@ TABLE [ ONLY ] nom_table [ * ] - - Clause <literal>HAVING</literal> + + Clause <literal>HAVING</literal> La clause optionnelle HAVING a la forme générale @@ -867,8 +865,8 @@ TABLE [ ONLY ] nom_table [ * ] - - Clause <literal>WINDOW</literal> + + Clause <literal>WINDOW</literal> La clause optionnelle WINDOW a la forme générale @@ -902,21 +900,22 @@ WINDOW nom_window AS ( Les éléments de la liste PARTITION BY sont interprétés - à peu près de la même façon que des éléments de , sauf qu'ils sont toujours des expressions - simples et jamais le nom ou le numéro d'une colonne en sortie. - Une autre différence est que ces expressions peuvent contenir des appels - à des fonctions d' agrégat, ce qui n'est pas autorisé dans une clause - GROUP BY classique. Ceci est autorisé ici parce que - le windowing se produit après le regroupement et l' agrégation. + à peu près de la même façon que des éléments d'une clause GROUP BY, sauf qu'ils sont + toujours des expressions simples et jamais le nom ou le numéro d'une + colonne en sortie. Une autre différence est que ces expressions peuvent + contenir des appels à des fonctions d' agrégat, ce qui n'est pas autorisé + dans une clause GROUP BY classique. Ceci est autorisé + ici parce que le windowing se produit après le regroupement et l' + agrégation. De façon similaire, les éléments de la liste ORDER BY - sont interprétés à peu près de la même façon que les éléments d'un , sauf que les expressions - sont toujours prises comme de simples expressions et jamais comme le nom ou - le numéro d'une colonne en sortie. + sont interprétés à peu près de la même façon que les éléments d'un ORDER BY, sauf que les + expressions sont toujours prises comme de simples expressions et jamais + comme le nom ou le numéro d'une colonne en sortie. @@ -1037,9 +1036,9 @@ EXCLUDE NO OTHERS L'utilité d'une clause WINDOW est de spécifier le comportement des fonctions window apparaissant dans - la clause - ou la clause de - la requête. Ces fonctions peuvent référencer les entrées de clauses + la clause SELECT + ou la clause ORDER BY + de la requête. Ces fonctions peuvent référencer les entrées de clauses WINDOW par nom dans leurs clauses OVER. Toutefois, il n'est pas obligatoire qu'une entrée de clause WINDOW soit référencée quelque part ; si elle n'est @@ -1066,8 +1065,8 @@ EXCLUDE NO OTHERS - - Liste <command>SELECT</command> + + Liste <command>SELECT</command> La liste SELECT (entre les mots clés @@ -1155,8 +1154,8 @@ EXCLUDE NO OTHERS - - <literal>DISTINCT</literal> Clause + + Clause <literal>DISTINCT</literal> Si SELECT DISTINCT est spécifié, toutes les lignes en double sont @@ -1198,8 +1197,8 @@ SELECT DISTINCT ON (lieu) lieu, heure, rapport - - Clause <literal>UNION</literal> + + Clause <literal>UNION</literal> La clause UNION a la forme générale : @@ -1248,8 +1247,8 @@ SELECT DISTINCT ON (lieu) lieu, heure, rapport - - Clause <literal>INTERSECT</literal> + + Clause <literal>INTERSECT</literal> La clause INTERSECT a la forme générale : @@ -1297,8 +1296,8 @@ SELECT DISTINCT ON (lieu) lieu, heure, rapport - - Clause <literal>EXCEPT</literal> + + Clause <literal>EXCEPT</literal> La clause EXCEPT a la forme générale : @@ -1344,8 +1343,8 @@ SELECT DISTINCT ON (lieu) lieu, heure, rapport - - Clause <literal>ORDER BY</literal> + + Clause <literal>ORDER BY</literal> La clause optionnelle ORDER BY a la forme @@ -1442,8 +1441,8 @@ SELECT DISTINCT ON (lieu) lieu, heure, rapport - - Clause <literal>LIMIT</literal> + + Clause <literal>LIMIT</literal> La clause LIMIT est constituée de deux sous-clauses @@ -1472,7 +1471,7 @@ OFFSET début PostgreSQL supporte aussi cette syntaxe. OFFSET début { ROW | ROWS } -FETCH { FIRST | NEXT } [ compte ] { ROW | ROWS } ONLY +FETCH { FIRST | NEXT } [ compte ] { ROW | ROWS } { ONLY | WITH TIES } Avec cette syntaxe, le standard SQL exige que la valeur de start ou compte ] { devront généralement être entre parenthèses pour éviter toute ambiguïté. Si compte est omis dans une clause FETCH, il vaut 1 par défaut. + The WITH TIES option is used to return any additional + rows that tie for the last place in the result set according to + the ORDER BY clause; ORDER BY + is mandatory in this case. ROW et ROWS ainsi que FIRST et NEXT sont des mots qui n'influencent pas les effets de ces clauses. @@ -1522,8 +1525,8 @@ FETCH { FIRST | NEXT } [ compte ] { - - Clause de verrouillage + + Clause de verrouillage FOR UPDATE, FOR NO KEY UPDATE, diff --git a/postgresql/ref/update.xml b/postgresql/ref/update.xml index ef53f126d..39c6040f5 100644 --- a/postgresql/ref/update.xml +++ b/postgresql/ref/update.xml @@ -146,7 +146,10 @@ UPDATE [ ONLY ] nom_table [ * ] [ [ Réinitialise la colonne à sa valeur par défaut (qui vaut NULL si aucune - expression par défaut ne lui a été affectée). + expression par défaut ne lui a été affectée). An identity column will be + set to a new value generated by the associated sequence. For a + generated column, specifying this is permitted but merely specifies the + normal behavior of computing the column from its generation expression. @@ -173,8 +176,8 @@ UPDATE [ ONLY ] nom_table [ * ] [ [ Une expression de table, qui permet aux colonnes des autres tables d'apparaître dans la condition WHERE et dans les - expressions de mise à jour. Cela utilise la même syntaxe que le d'une instruction + expressions de mise à jour. Cela utilise la même syntaxe que le FROM d'une instruction SELECT ; par exemple, un alias peut être indiqué pour le nom de la table. Ne répétez pas la table cible dans un element_from, sauf si vous souhaitez faire un diff --git a/postgresql/ref/vacuum.xml b/postgresql/ref/vacuum.xml index 19c061ffb..b78499a6f 100644 --- a/postgresql/ref/vacuum.xml +++ b/postgresql/ref/vacuum.xml @@ -36,6 +36,7 @@ VACUUM [ FULL ] [ FREEZE ] [ VERBOSE ] [ ANALYZE ] [ boolean ] INDEX_CLEANUP [ boolean ] TRUNCATE [ boolean ] + PARALLEL integer et table_et_colonnes est : @@ -81,11 +82,14 @@ VACUUM [ FULL ] [ FREEZE ] [ VERBOSE ] [ ANALYZE ] [ + + PARALLEL + + + Perform index vacuum and index cleanup phases of VACUUM + in parallel using integer + background workers (for the details of each vacuum phase, please + refer to ). In plain VACUUM + (without FULL), if the PARALLEL option + is omitted, then the number of workers is determined based on the number of + indexes on the relation that support parallel vacuum operation and is further + limited by . An index + can participate in parallel vacuum if and only if the size of the index is + more than . Please note + that it is not guaranteed that the number of parallel workers specified in + integer will be used during + execution. It is possible for a vacuum to run with fewer workers than + specified, or even with no workers at all. Only one worker can be used per + index. So parallel workers are launched only when there are at least + 2 indexes in the table. Workers for vacuum are launched + before the start of each phase and exit at the end of the phase. These + behaviors might change in a future release. This option can't be used with + the FULL option. + + + + boolean @@ -250,6 +281,15 @@ VACUUM [ FULL ] [ FREEZE ] [ VERBOSE ] [ ANALYZE ] [ integer + + + Specifies a non-negative integer value passed to the selected option. + + + + nom_table @@ -333,13 +373,21 @@ VACUUM [ FULL ] [ FREEZE ] [ VERBOSE ] [ ANALYZE ] [ + vacuum basé sur le coût. For + parallel vacuum, each worker sleeps in proportion to the work done by that + worker. Voir pour des informations supplémentaires. diff --git a/postgresql/ref/vacuumdb.xml b/postgresql/ref/vacuumdb.xml index bbdb93c67..f74aac9f0 100644 --- a/postgresql/ref/vacuumdb.xml +++ b/postgresql/ref/vacuumdb.xml @@ -17,7 +17,7 @@ - vacuumdb + vacuumdb récupère l'espace inutilisé et, optionnellement, analyse une base de données PostgreSQL @@ -237,6 +237,24 @@ + + + + + + Specify the parallel degree of parallel vacuum. + This allows the vacuum to leverage multiple CPUs to process indexes. + See . + + + + This option is only available for servers running + PostgreSQL 13 and later. + + + + + diff --git a/postgresql/ref/values.xml b/postgresql/ref/values.xml index e48020f21..ade268b2d 100644 --- a/postgresql/ref/values.xml +++ b/postgresql/ref/values.xml @@ -89,7 +89,7 @@ VALUES ( expression [, ...] ) [, .. résultat. Cette expression peut faire référence aux colonnes de VALUES en tant que column1, column2, etc. Pour plus de détails, voir - . + in the documentation. @@ -99,7 +99,7 @@ VALUES ( expression [, ...] ) [, .. Un opérateur de tri. Pour plus de détails, voir - . + in the documentation. @@ -109,7 +109,7 @@ VALUES ( expression [, ...] ) [, .. Le nombre maximum de lignes à renvoyer. Pour plus de détails, voir - . + in the documentation. @@ -120,7 +120,7 @@ VALUES ( expression [, ...] ) [, .. Le nombre de lignes à échapper avant de commencer à renvoyer des lignes. Pour plus de détails, - . + in the documentation. diff --git a/postgresql/reference.xml b/postgresql/reference.xml index 55c11ff20..4b9238a0f 100644 --- a/postgresql/reference.xml +++ b/postgresql/reference.xml @@ -263,6 +263,7 @@ &pgReceivewal; &pgRecvlogical; &pgRestore; + &pgVerifyBackup; &psqlRef; &reindexdb; &vacuumdb; diff --git a/postgresql/regress.xml b/postgresql/regress.xml index 26611e794..2072723cc 100644 --- a/postgresql/regress.xml +++ b/postgresql/regress.xml @@ -372,15 +372,6 @@ make check LANG=C ENCODING=EUC_JP make check EXTRA_TESTS=numeric_big - Pour exécuter les tests sur le collationnement : - -make check EXTRA_TESTS='collate.linux.utf8 collate.icu.utf8' LANG=en_US.utf8 - - Le test collate.linux.utf8 fonctionne seulement sur - les plateformes Linux/glibc. Le test collate.icu.utf8 - fonctionne seulement si le support pour ICU est présent. Les deux tests - ne pourront réussir que s'ils sont effectués sur une base utilisant - un encodage UTF-8. diff --git a/postgresql/release-12.xml b/postgresql/release-12.xml deleted file mode 100644 index d522c3939..000000000 --- a/postgresql/release-12.xml +++ /dev/null @@ -1,7965 +0,0 @@ - - - - - - Release 12.3 - - - Release date: - 2020-05-14 - - - - This release contains a variety of fixes from 12.2. - For information about new features in major release 12, see - . - - - - Migration to Version 12.3 - - - A dump/restore is not required for those running 12.X. - - - - However, if you are upgrading from a version earlier than 12.2, - see . - - - - - Changes - - - - - - - Fix possible failure with GENERATED columns - (David Rowley) - - - - If a GENERATED column's value is an exact copy of - another column of the table (and it is a pass-by-reference data - type), it was possible to crash or insert corrupted data into the - table. While it would be rather pointless for - a GENERATED expression to just duplicate another - column, an expression using a function that sometimes returns its - input unchanged could create the situation. - - - - - - - Handle inheritance of generated columns better (Peter Eisentraut) - - - - When a table column is inherited during CREATE TABLE - ... INHERITS, disallow changing any generation properties - when the parent column is already - marked GENERATED; but allow a child column to be - marked GENERATED when its parent is not. - - - - - - - Fix cross-column references in CREATE TABLE LIKE INCLUDING - GENERATED (Peter Eisentraut) - - - - CREATE TABLE ... LIKE failed when trying to copy - a GENERATED expression that references a - physically-later column. - - - - - - - Propagate ALTER TABLE ... SET STORAGE to indexes - (Peter Eisentraut) - - - - Non-expression index columns have always copied - the attstorage property of their table - column at creation. Update them when ALTER TABLE ... SET - STORAGE is done, to maintain consistency. - - - - - - - Preserve the indisclustered setting of - indexes rewritten by ALTER TABLE (Amit Langote, - Justin Pryzby) - - - - Previously, ALTER TABLE lost track of which index - had been used for CLUSTER. - - - - - - - Preserve the replica identity properties of indexes rewritten - by ALTER TABLE (Quan Zongliang, Peter Eisentraut) - - - - - - - Preserve the indisclustered setting of - indexes rebuilt by REINDEX CONCURRENTLY - (Justin Pryzby) - - - - - - - Lock objects sooner during DROP OWNED BY - (Álvaro Herrera) - - - - This avoids failures in race-condition cases where another session is - deleting some of the same objects. - - - - - - - Fix error-case processing for CREATE ROLE ... IN - ROLE (Andrew Gierth) - - - - Some error cases would be reported as unexpected node - type or the like, instead of the intended message. - - - - - - - Ensure that when a partition is detached, any triggers cloned from - its formerly-parent table are removed (Justin Pryzby) - - - - - - - Fix crash when COLLATE is applied to a - non-collatable type in a partition bound expression (Dmitry Dolgov) - - - - - - - Ensure that unique indexes over partitioned tables match the - equality semantics of the partitioning key (Guancheng Luo) - - - - This would only be an issue with index opclasses that have unusual - notions of equality, but it's wrong in theory, so check. - - - - - - - Ensure that members of the pg_read_all_stats role - can read all statistics views, as expected (Magnus Hagander) - - - - The functions underlying - the pg_stat_progress_* views had not gotten - this memo. - - - - - - - Repair performance regression in - information_schema.triggers - view (Tom Lane) - - - - This patch redefines that view so that an - outer WHERE clause constraining the table name - can be pushed down into the view, allowing its calculations to be - done only for triggers belonging to the table of interest rather - than all triggers in the database. In a database with many triggers - this would make a significant speed difference for queries of that - form. Since things worked that way before v11, this is a potential - performance regression. Users who find this to be a problem can fix - it by replacing the view definition (or, perhaps, just deleting and - reinstalling the whole information_schema - schema). - - - - - - - Repair performance regression in floating point overflow/underflow - detection (Emre Hasegeli) - - - - Previous refactoring had resulted in isinf() - being called extra times in some hot code paths. - - - - - - - Fix full text search to handle NOT above a phrase search correctly - (Tom Lane) - - - - Queries such as !(foo<->bar) failed to find - matching rows when implemented as a GiST or GIN index search. - - - - - - - Fix full text search for cases where a phrase search includes an - item with both prefix matching and a weight restriction (Tom Lane) - - - - - - - Fix ts_headline() to make better headline - selections when working with phrase queries (Tom Lane) - - - - - - - Fix bugs in gin_fuzzy_search_limit processing - (Adé Heyward, Tom Lane) - - - - A small value of gin_fuzzy_search_limit could - result in unexpected slowness due to unintentionally rescanning the - same index page many times. Another code path failed to apply the - intended filtering at all, possibly returning too many values. - - - - - - - Allow input of type circle to accept the format - (x,y),r - as the documentation says it does (David Zhang) - - - - - - - Make the get_bit() - and set_bit() functions cope - with bytea strings longer than 256MB (Movead Li) - - - - Since the bit number argument is only int4, it's - impossible to use these functions to access bits beyond the first - 256MB of a long bytea. We'll widen the argument - to int8 in v13, but in the meantime, allow these - functions to work on the initial substring of a - long bytea. - - - - - - - Ignore file-not-found errors in pg_ls_waldir() - and allied functions (Tom Lane) - - - - This prevents a race condition failure if a file is removed between - when we see its directory entry and when we attempt - to stat() it. - - - - - - - Avoid possibly leaking an open-file descriptor for a directory - in pg_ls_dir(), - pg_timezone_names(), - pg_tablespace_databases(), and allied functions - (Justin Pryzby) - - - - - - - Fix polymorphic-function type resolution to correctly infer the - actual type of an anyarray output when given only - an anyrange input (Tom Lane) - - - - - - - Fix server's connection-startup logic for case where a GSSAPI - connection is rejected because support is not compiled in, and the - client then tries SSL instead (Andrew Gierth) - - - - This led to a bogus unsupported frontend protocol - failure. - - - - - - - Fix memory leakage during GSSAPI encryption (Tom Lane) - - - - Both the backend and libpq would leak memory equivalent to the total - amount of data sent during the session, if GSSAPI encryption is in use. - - - - - - - Fix query-lifespan memory leak for a set-returning function used in - a query's FROM clause (Andres Freund) - - - - - - - Avoid leakage of a hashed subplan's hash tables across multiple - executions (Andreas Karlsson, Tom Lane) - - - - This mistake could result in severe memory bloat if a query - re-executed a hashed subplan enough times. - - - - - - - Improve planner's handling of no-op domain coercions (Tom Lane) - - - - Fix some cases where a domain coercion that does nothing was not - completely removed from expressions. - - - - - - - Avoid unlikely crash when REINDEX is terminated - by a session-shutdown signal (Tom Lane) - - - - - - - Prevent printout of possibly-incorrect hash join table statistics - in EXPLAIN (Konstantin Knizhnik, Tom Lane, Thomas - Munro) - - - - - - - Fix reporting of elapsed time for heap truncation steps - in VACUUM VERBOSE (Tatsuhito Kasahara) - - - - - - - Fix possible undercounting of deleted B-tree index pages - in VACUUM VERBOSE output (Peter Geoghegan) - - - - - - - Fix wrong bookkeeping for oldest deleted page in a B-tree index - (Peter Geoghegan) - - - - This could cause subtly wrong decisions about - when VACUUM can skip an index cleanup scan; - although it appears there may be no significant user-visible effects - from that. - - - - - - - Ensure that TimelineHistoryRead and TimelineHistoryWrite wait states - are reported in all code paths that read or write timeline history - files (Masahiro Ikeda) - - - - - - - Avoid possibly showing waiting twice in a process's - PS status (Masahiko Sawada) - - - - - - - Avoid race condition when ANALYZE replaces the - catalog tuple for extended statistics data (Dean Rasheed) - - - - - - - Remove ill-considered skip of redundant - anti-wraparound vacuums (Michael Paquier) - - - - This avoids a corner case where autovacuum could get into a loop of - repeatedly trying and then skipping the same vacuum job. - - - - - - - Ensure INCLUDE'd columns are always removed from B-tree pivot tuples - (Peter Geoghegan) - - - - This mistake wasted space in some rare cases, but was otherwise - harmless. - - - - - - - Cope with invalid TOAST indexes that could be left over after a - failed REINDEX CONCURRENTLY (Julien Rouhaud) - - - - - - - Ensure that valid index dependencies are left behind after a - failed REINDEX CONCURRENTLY (Michael Paquier) - - - - Previously the old index could be left with - no pg_depend links at all, so that for - example it would not get dropped if the parent table is dropped. - - - - - - - Avoid failure if autovacuum tries to access a just-dropped temporary - schema (Tom Lane) - - - - This hazard only arises if a superuser manually drops a temporary - schema; which isn't normal practice, but should work. - - - - - - - Avoid premature recycling of WAL segments during crash recovery - (Jehan-Guillaume de Rorthais) - - - - WAL segments that become ready to be archived during crash recovery - were potentially recycled without being archived. - - - - - - - Avoid scanning irrelevant timelines during archive recovery (Kyotaro - Horiguchi) - - - - This can eliminate many attempts to fetch non-existent WAL files from - archive storage, which is helpful if archive access is slow. - - - - - - - Remove bogus subtransaction logged without previous top-level - txn record error check in logical decoding (Arseny Sher, - Amit Kapila) - - - - This condition is legitimately reachable in various scenarios, so - remove the check. - - - - - - - Avoid possible failure after a replication slot copy, due to - premature removal of WAL data (Masahiko Sawada, Arseny Sher) - - - - - - - Ensure that a replication - slot's io_in_progress_lock is released in failure - code paths (Pavan Deolasee) - - - - This could result in a walsender later becoming stuck waiting for - the lock. - - - - - - - Ensure that generated columns are correctly handled during updates - issued by logical replication (Peter Eisentraut) - - - - - - - Fix race conditions in synchronous standby management (Tom Lane) - - - - During a change in the synchronous_standby_names - setting, there was a window in which wrong decisions could be made - about whether it is OK to release transactions that are waiting for - synchronous commit. Another hazard for similarly wrong decisions - existed if a walsender process exited and was immediately replaced - by another. - - - - - - - Add missing SQLSTATE values to a few error reports (Sawada Masahiko) - - - - - - - Fix PL/pgSQL to reliably refuse to execute an event trigger function - as a plain function (Tom Lane) - - - - - - - Fix memory leak in libpq when - using sslmode=verify-full (Roman Peshkurov) - - - - Certificate verification during connection startup could leak some - memory. This would become an issue if a client process opened many - database connections during its lifetime. - - - - - - - Fix ecpg to treat an argument of - just - as meaning read - from stdin on all platforms (Tom Lane) - - - - - - - Fix crash in psql when attempting to - re-establish a failed connection (Michael Paquier) - - - - - - - Allow tab-completion of the filename argument - to psql's \gx command - (Vik Fearing) - - - - - - - Add pg_dump support for ALTER - ... DEPENDS ON EXTENSION (Álvaro Herrera) - - - - pg_dump previously ignored dependencies added - this way, causing them to be forgotten during dump/restore or - pg_upgrade. - - - - - - - Fix pg_dump to dump comments on RLS - policy objects (Tom Lane) - - - - - - - In pg_dump, postpone restore of event - triggers till the end (Fabrízio de Royes Mello, Hamid Akhtar, - Tom Lane) - - - - This minimizes the risk that an event trigger could interfere with - the restoration of other objects. - - - - - - - Ensure that pg_basebackup generates valid - tar files (Robert Haas) - - - - In some cases a partial block of zeroes would be added to the end of - the file. While this seems to be harmless with common versions of - tar, it's not OK per the POSIX file format spec. - - - - - - - Make pg_checksums skip tablespace - subdirectories that belong to a - different PostgreSQL major version - (Michael Banck, Bernd Helmle) - - - - Such subdirectories don't really belong to our database cluster, and - so must not be processed. - - - - - - - Ignore temporary copies of pg_internal.init - in pg_checksums and related - programs (Michael Paquier) - - - - - - - Fix quoting of , - and values - in createdb utility (Michael Paquier) - - - - - - - contrib/lo's lo_manage() - function crashed if called directly rather than as a trigger (Tom - Lane) - - - - - - - In contrib/ltree, - protect against overflow of ltree - and lquery length fields (Nikita Glukhov) - - - - - - - Work around failure in contrib/pageinspect's - bt_metap() function when an oldest_xact value - exceeds 2^31-1 (Peter Geoghegan) - - - - Such XIDs will now be reported as negative integers, which isn't - great but it beats throwing an error. v13 will widen the output - argument to int8 to provide saner reporting. - - - - - - - Fix cache reference leak in contrib/sepgsql - (Michael Luo) - - - - - - - On Windows, avoid premature creation of postmaster's log file - during pg_ctl start (Alexander Lakhin) - - - - The previous coding could allow the file to be created with - permissions that wouldn't allow the postmaster to write on it. - - - - - - - Avoid failures when dealing with Unix-style locale names on - Windows (Juan José Santamaría Flecha) - - - - - - - On Windows, set console VT100 compatibility mode in - programs that support PG_COLOR colorization - (Juan José Santamaría Flecha) - - - - Without this, the colorization option doesn't actually work. - - - - - - - Stop requiring extra parentheses in ereport() - calls (Andres Freund, Tom Lane) - - - - - - - Use pkg-config, if available, to - locate libxml2 - during configure (Hugh McMaster, Tom - Lane, Peter Eisentraut) - - - - If pkg-config is not present or lacks - knowledge of libxml2, we still - query xml2-config as before. - - - - This change could break build processes that try to - make PostgreSQL use a non-default version - of libxml2 by putting that - version's xml2-config into - the PATH. Instead, - set XML2_CONFIG to point to the - non-default xml2-config. That method - will work with either older or - newer PostgreSQL releases. - - - - - - - Fix Makefile dependencies for libpq - and ecpg (Dagfinn Ilmari Mannsåker) - - - - - - - In MSVC builds, cope with spaces in the path name for Python - (Victor Wagner) - - - - - - - In MSVC builds, fix detection of Visual Studio version to work with - more language settings (Andrew Dunstan) - - - - - - - In MSVC builds, use -Wno-deprecated with bison - versions newer than 3.0, as non-Windows builds already do (Andrew - Dunstan) - - - - - - - Update time zone data files to tzdata - release 2020a for DST law changes in Morocco and the Canadian Yukon, - plus historical corrections for Shanghai. - - - - The America/Godthab zone has been renamed to America/Nuuk to reflect - current English usage; however, the old name remains available as a - compatibility link. - - - - Also, update initdb's list of known - Windows time zone names to include recent additions, improving the - odds that it will correctly translate the system time zone setting - on that platform. - - - - - - - - - - Release 12.2 - - - Release date: - 2020-02-13 - - - - This release contains a variety of fixes from 12.1. - For information about new features in major release 12, see - . - - - - Migration to Version 12.2 - - - A dump/restore is not required for those running 12.X. - - - - However, if you have any foreign key constraints referencing - partitioned tables, see the two entries below about bugs in that - feature. - - - - - Changes - - - - - - - Add missing permissions checks for ALTER ... DEPENDS ON - EXTENSION (Álvaro Herrera) - - - - Marking an object as dependent on an extension did not have any - privilege check whatsoever. This oversight allowed any user to mark - routines, triggers, materialized views, or indexes as droppable by - anyone able to drop an extension. Require that the calling user own - the specified object (and hence have privilege to drop it). - (CVE-2020-1720) - - - - - - - Fix TRUNCATE ... CASCADE to ensure all relevant - partitions are truncated (Jehan-Guillaume de Rorthais) - - - - If a partition of a partitioned table is truncated with - the CASCADE option, and the partitioned table has - a foreign-key reference from another table, that table must also be - truncated. The need to check this was missed if the referencing - table was itself partitioned, possibly allowing rows to survive that - violate the foreign-key constraint. - - - - Hence, if you have foreign key constraints between partitioned - tables, and you have done any - partition-level TRUNCATE on the referenced table, - you should check to see if any foreign key violations exist. The - simplest way is to add a new instance of the foreign key constraint - (and, once that succeeds, drop it or the original constraint). - That may be prohibitive from a locking standpoint, however, in which - case you might prefer to manually query for unmatched rows. - - - - - - - Fix failure to attach foreign key constraints to sub-partitions - (Jehan-Guillaume de Rorthais) - - - - When adding a partition to a level below the first level of a - multi-level partitioned table, foreign key constraints referencing - the top partitioned table were not cloned to the new partition, - leading to possible constraint violations later. Detaching and - re-attaching the new partition is the cheapest way to fix this. - However, if there are many partitions to be fixed, adding a new - instance of the foreign key constraint might be preferable. - - - - - - - Fix possible crash during concurrent update on a partitioned table - or inheritance tree (Tom Lane) - - - - - - - Ensure that row triggers on partitioned tables are correctly - cloned to sub-partitions when appropriate - (Álvaro Herrera) - - - - User-defined triggers (but not triggers for foreign key or deferred - unique constraints) might be missed when creating or attaching a - partition. - - - - - - - Fix logical replication subscriber code to execute - per-column UPDATE triggers when appropriate - (Peter Eisentraut) - - - - - - - Avoid failure in logical decoding when a large transaction must be - spilled into many separate temporary files (Amit Khandekar) - - - - - - - Fix possible crash or data corruption when a logical replication - subscriber processes a row update (Tom Lane, Tomas Vondra) - - - - This bug caused visible problems only if the subscriber's table - contained columns that were not being copied from the publisher and - had pass-by-reference data types. - - - - - - - Fix crash in logical replication subscriber after DDL changes on a - subscribed relation (Jehan-Guillaume de Rorthais, Vignesh C) - - - - - - - Fix failure in logical replication publisher after a database crash - and restart (Vignesh C) - - - - - - - Ensure that the effect - of pg_replication_slot_advance() on a physical - replication slot will persist across restarts (Alexey Kondratov, - Michael Paquier) - - - - - - - Improve efficiency of logical replication with REPLICA - IDENTITY FULL (Konstantin Knizhnik) - - - - When searching for an existing tuple during an update or delete - operation, return the first matching tuple not the last one. - - - - - - - Fix base backup to handle database OIDs larger - than INT32_MAX (Peter Eisentraut) - - - - - - - Ensure parallel plans are always shut down at the correct time - (Kyotaro Horiguchi) - - - - This oversight is known to result in temporary file - leak warnings from multi-batch parallel hash joins. - - - - - - - Prevent premature shutdown of a Gather or GatherMerge plan node that - is underneath a Limit node (Amit Kapila) - - - - This avoids failure if such a plan node needs to be scanned more - than once, as for instance if it is on the inside of a nestloop. - - - - - - - Improve efficiency of parallel hash join on CPUs with many cores - (Gang Deng, Thomas Munro) - - - - - - - Avoid crash in parallel CREATE INDEX when there - are no free dynamic shared memory slots (Thomas Munro) - - - - Fall back to a non-parallel index build, instead. - - - - - - - Avoid memory leak when there are no free dynamic shared memory slots - (Thomas Munro) - - - - - - - Ignore the CONCURRENTLY option when performing an - index creation, drop, or rebuild on a temporary table (Michael - Paquier, Heikki Linnakangas, Andres Freund) - - - - This avoids strange failures if the temporary table has - an ON COMMIT action. There is no benefit in - using CONCURRENTLY for a temporary table anyway, - since other sessions cannot access the table, making the extra - processing pointless. - - - - - - - Fix possible failure when resetting expression indexes on temporary - tables that are marked ON COMMIT DELETE ROWS - (Tom Lane) - - - - - - - Fix possible crash in BRIN index operations - with box, range and inet data - types (Heikki Linnakangas) - - - - - - - Fix crash during recursive page split in GiST index build (Heikki - Linnakangas) - - - - - - - Fix handling of deleted pages in GIN indexes (Alexander Korotkov) - - - - Avoid possible deadlocks, incorrect updates of a deleted page's - state, and failure to traverse through a recently-deleted page. - - - - - - - Fix possible crash with a SubPlan (sub-SELECT) - within a multi-row VALUES list (Tom Lane) - - - - - - - Fix failure in ALTER TABLE when a column - referenced in a GENERATED expression has been - added or changed in type earlier in the - same ALTER command (Tom Lane) - - - - - - - Fix failure to insert default values for missing - attributes during tuple conversion (Vik Fearing, Andrew Gierth) - - - - This could result in values incorrectly reading as NULL, when - they come from columns that had been added by ALTER - TABLE ADD COLUMN with a constant default. - - - - - - - Fix unlikely panic in the checkpointer process, caused by opening - relation segments that might already have been removed (Thomas Munro) - - - - - - - Fix crash after FileClose() failure (Noah Misch) - - - - This issue could only be observed - with data_sync_retry enabled, since otherwise - FileClose() failure would be reported as a PANIC. - - - - - - - Fix handling of multiple AFTER ROW triggers on a - foreign table (Etsuro Fujita) - - - - - - - Fix unlikely crash with pass-by-reference aggregate transition - states (Andres Freund, Teodor Sigaev) - - - - - - - Improve error reporting in to_date() - and to_timestamp() - (Tom Lane, Álvaro Herrera) - - - - Reports about incorrect month or day names in input strings could - truncate the input in the middle of a multi-byte character, leading - to an improperly encoded error message that could cause follow-on - failures. Truncate at the next whitespace instead. - - - - - - - Fix off-by-one result for EXTRACT(ISOYEAR - FROM timestamp) for BC dates - (Tom Lane) - - - - - - - Ensure that the <> operator for - type char reports indeterminate-collation errors as - such, rather than as cache lookup failed for collation - 0 (Tom Lane) - - - - - - - Avoid treating TID scans as sequential scans (Tatsuhito Kasahara) - - - - A refactoring oversight caused TID scans (selection by CTID) to be - counted as sequential scans in the statistics views, and to take - whole-table predicate locks as sequential scans do. The latter - behavior could cause unnecessary serialization errors in - serializable transaction mode. - - - - - - - Avoid stack overflow in information_schema views - when a self-referential view exists in the system catalogs - (Tom Lane) - - - - A self-referential view can't work; it will always result in - infinite recursion. We handled that situation correctly when - trying to execute the view, but not when inquiring whether it is - automatically updatable. - - - - - - - Ensure that walsender processes always show NULL for transaction - start time in pg_stat_activity - (Álvaro Herrera) - - - - Previously, the xact_start column would - sometimes show the process start time. - - - - - - - Improve performance of hash joins with very large inner relations - (Thomas Munro) - - - - - - - Reduce spinlock contention when there are many active walsender - processes (Pierre Ducroquet) - - - - - - - Fix placement of Subplans Removed field - in EXPLAIN output (Daniel Gustafsson, Tom Lane) - - - - In non-text output formats, this field was emitted inside - the Plans sub-group, resulting in syntactically - invalid output. Attach it to the parent Append or MergeAppend plan - node as intended. This causes the field to change position in text - output format too: if there are any InitPlans attached to the same - plan node, Subplans Removed will now appear before - those. - - - - - - - Fix EXPLAIN's SETTINGS option - to print as empty in non-text output formats (Tom Lane) - - - - In the non-text output formats, fields are supposed to appear when - requested, even if they have empty or zero values. - - - - - - - Allow the planner to apply potentially-leaky tests to child-table - statistics, if the user can read the corresponding column of the - table that's actually named in the query (Dilip Kumar, Amit Langote) - - - - This change fixes a performance problem for partitioned tables that - was created by the fix for CVE-2017-7484. That security fix - disallowed applying leaky operators to statistics for columns that - the current user doesn't have permission to read directly. However, - it's somewhat common to grant permissions only on the parent - partitioned table and not bother to do so on individual partitions. - In such cases, the user can read the column via the parent, so - there's no point in this security restriction; it only results in - poorer planner estimates than necessary. - - - - - - - Fix planner errors induced by overly-aggressive collapsing of joins - to single-row subqueries (Tom Lane) - - - - This mistake led to errors such as failed to construct the - join relation. - - - - - - - Fix no = operator for - opfamily NNNN planner error when - trying to match a LIKE or regex pattern-match - operator to a binary-compatible index opclass (Tom Lane) - - - - - - - Fix edge-case crashes and misestimations in selectivity calculations - for the <@ and @> range - operators (Michael Paquier, Andrey Borodin, Tom Lane) - - - - - - - Fix incorrect estimation for OR clauses when - using most-common-value extended statistics (Tomas Vondra) - - - - - - - Ignore system columns when applying most-common-value - extended statistics (Tomas Vondra) - - - - This prevents negative bitmapset member not allowed - planner errors for affected queries. - - - - - - - Fix BRIN index logic to support hypothetical BRIN indexes - (Julien Rouhaud, Heikki Linnakangas) - - - - Previously, if an index adviser extension tried to - get the planner to produce a plan involving a hypothetical BRIN - index, that would fail, because the BRIN cost estimation code would - always try to physically access the index's metapage. Now it checks - to see if the index is only hypothetical, and uses default - assumptions about the index parameters if so. - - - - - - - Improve error reporting for attempts to use automatic updating of - views with conditional INSTEAD rules (Dean Rasheed) - - - - This has never been supported, but previously the error was thrown - only at execution time, so that it could be masked by planner errors. - - - - - - - Prevent a composite type from being included in itself indirectly - via a range type (Tom Lane, Julien Rouhaud) - - - - - - - Disallow partition key expressions that return pseudo-types, such - as record (Tom Lane) - - - - - - - Fix error reporting for index expressions of prohibited types - (Amit Langote) - - - - - - - Fix dumping of views that contain only a VALUES - list to handle cases where a view output column has been renamed - (Tom Lane) - - - - - - - Ensure that data types and collations used - in XMLTABLE constructs are accounted for when - computing dependencies of a view or rule (Tom Lane) - - - - Previously it was possible to break a view - using XMLTABLE by dropping a type, if the type - was not otherwise referenced in the view. This fix does not - correct the dependencies already recorded for existing views, only - for newly-created ones. - - - - - - - Prevent unwanted downcasing and truncation of RADIUS authentication - parameters (Marcos David) - - - - The pg_hba.conf parser mistakenly treated these - fields as SQL identifiers, which in general they aren't. - - - - - - - Transmit incoming NOTIFY messages to the client - before sending ReadyForQuery, rather than after - (Tom Lane) - - - - This change ensures that, with libpq and other client libraries that - act similarly to it, any notifications received during a transaction - will be available by the time the client thinks the transaction is - complete. This probably makes no difference in practical - applications (which would need to cope with asynchronous - notifications in any case); but it makes it easier to build test - cases with reproducible behavior. - - - - - - - Fix bugs in handling of non-blocking I/O when using GSSAPI - encryption (Tom Lane) - - - - These errors could result in dropping data (usually leading to - subsequent wire-protocol-violation errors) or in - a livelock situation where a sending process goes to - sleep although not all its data has been sent. - Moreover, libpq failed to keep separate - encryption state for each connection, creating the possibility for - failures in applications using multiple encrypted database - connections. - - - - - - - Allow libpq to parse all GSS-related - connection parameters even when the GSSAPI code hasn't been compiled - in (Tom Lane) - - - - This makes the behavior similar to our SSL support, where it was - long ago deemed to be a good idea to always accept all the related - parameters, even if some are ignored or restricted due to lack of - the feature in a particular build. - - - - - - - Fix incorrect handling of %b - and %B format codes - in ecpg's - PGTYPEStimestamp_fmt_asc() function - (Tomas Vondra) - - - - Due to an off-by-one error, these codes would print the wrong month - name, or possibly crash. - - - - - - - Avoid crash after an out-of-memory failure - in ecpglib (Tom Lane) - - - - - - - Fix - parallel pg_dump/pg_restore - to more gracefully handle failure to create worker processes - (Tom Lane) - - - - - - - Prevent possible crash or lockup when attempting to terminate a - parallel pg_dump/pg_restore - run via a signal (Tom Lane) - - - - - - - In pg_upgrade, look inside arrays and - ranges while searching for non-upgradable data types in tables - (Tom Lane) - - - - - - - Apply more thorough syntax checking - to createuser's - option (Álvaro Herrera) - - - - - - - Cope with changes of the specific type referenced by a PL/pgSQL - composite-type variable in more cases (Ashutosh Sharma, Tom Lane) - - - - Dropping and re-creating the composite type referenced by a PL/pgSQL - variable could lead to could not open relation with - OID NNNN errors. - - - - - - - Avoid crash in postgres_fdw when trying to - send a command like UPDATE remote_tab SET (x,y) = (SELECT - ...) to the remote server (Tom Lane) - - - - - - - In contrib/dict_int, - reject maxlen settings less than one - (Tomas Vondra) - - - - This prevents a possible crash with silly settings for that parameter. - - - - - - - Disallow NULL category values - in contrib/tablefunc's - crosstab() function (Joe Conway) - - - - This case never worked usefully, and it would crash on some - platforms. - - - - - - - Fix configure's probe for - OpenSSL's SSL_clear_options() function so that - it works with OpenSSL versions before 1.1.0 (Michael Paquier, Daniel - Gustafsson) - - - - This problem could lead to failure to set the SSL compression option - as desired, when PostgreSQL is built against - an old version of OpenSSL. - - - - - - - Mark some timeout and statistics-tracking GUC variables - as PGDLLIMPORT, to allow extensions to access - them on Windows (Pascal Legrand) - - - - This applies to - idle_in_transaction_session_timeout, - lock_timeout, - statement_timeout, - track_activities, - track_counts, and - track_functions. - - - - - - - Avoid memory leak in sanity checks for slab memory - contexts (Tomas Vondra) - - - - This isn't an issue for production builds, since they wouldn't - ordinarily have memory context checking enabled; but the leak could - be quite severe in a debug build. - - - - - - - Fix multiple statistics entries reported by the LWLock statistics - mechanism (Fujii Masao) - - - - The LWLock statistics code (which is not built by default; it - requires compiling with ) - could report multiple entries for the same LWLock and backend - process, as a result of faulty hashtable key creation. - - - - - - - Fix race condition that led to delayed delivery of interprocess - signals on Windows (Amit Kapila) - - - - This caused visible timing oddities in NOTIFY, - and perhaps other misbehavior. - - - - - - - Fix handling of a corner-case error result from - Windows' ReadFile() function - (Thomas Munro, Juan José Santamaría Flecha) - - - - So far as is known, this oversight just resulted in noisy log - messages, not any actual query misbehavior. - - - - - - - On Windows, retry a few times after - an ERROR_ACCESS_DENIED file access failure - (Alexander Lakhin, Tom Lane) - - - - This helps cope with cases where a file open attempt fails because - the targeted file is flagged for deletion but not yet actually gone. - pg_ctl, for example, frequently failed - with such an error when probing to see if the postmaster had shut - down yet. - - - - - - - On Windows, work around sharing violations for the postmaster's log - file when pg_ctl is used to start the - postmaster very shortly after it's been stopped, for example by - pg_ctl restart (Alexander Lakhin) - - - - - - - - - - Release 12.1 - - - Release date: - 2019-11-14 - - - - This release contains a variety of fixes from 12.0. - For information about new features in major release 12, see - . - - - - Migration to Version 12.1 - - - A dump/restore is not required for those running 12.X. - - - - - Changes - - - - - - - Fix crash when ALTER TABLE adds a column without - a default value along with making other changes that require a table - rewrite (Andres Freund) - - - - - - - Fix lock handling in REINDEX CONCURRENTLY - (Michael Paquier) - - - - REINDEX CONCURRENTLY neglected to take a - session-level lock on the new index version, potentially allowing - other sessions to manipulate it too soon. - Also, a query-cancel or session-termination interrupt arriving at the - wrong time could result in failure to release the session-level - locks that REINDEX CONCURRENTLY does hold. - - - - - - - Avoid crash due to race condition when reporting the progress of - a CREATE INDEX CONCURRENTLY or REINDEX - CONCURRENTLY command (Álvaro Herrera) - - - - - - - Avoid creating duplicate dependency entries during REINDEX - CONCURRENTLY (Michael Paquier) - - - - This bug resulted in bloat in pg_depend, - but no worse consequences than that. - - - - - - - Prevent VACUUM from trying to freeze - an old multixact ID involving a still-running transaction - (Nathan Bossart, Jeremy Schneider) - - - - This case would lead to VACUUM failing until the - old transaction terminates. - - - - - - - Fix wrong type of slot error when trying - to CLUSTER on an expression index (Andres Freund) - - - - - - - SET CONSTRAINTS ... DEFERRED failed on - partitioned tables, incorrectly complaining about lack of triggers - (Álvaro Herrera) - - - - - - - Fix failure when creating indexes for a partition, if the parent - partitioned table contains any dropped columns (Michael Paquier) - - - - - - - Fix dropping of indexed columns in partitioned tables - (Amit Langote, Michael Paquier) - - - - Previously this might fail with an error message complaining about - the dependencies of the indexes. It should automatically drop the - indexes, instead. - - - - - - - Ensure that a partition index can be dropped after a failure to - reindex it concurrently (Michael Paquier) - - - - The - index's pg_class.relispartition - flag was left in the wrong state in such a case, - causing DROP INDEX to fail. - - - - - - - Fix handling of equivalence class members for partition-wise joins - (Amit Langote) - - - - This oversight could lead either to failure to use a feasible - partition-wise join plan, or to a could not find pathkey item - to sort planner failure. - - - - - - - Ensure that offset expressions in WINDOW clauses - are processed when a query's expressions are manipulated (Andrew Gierth) - - - - This oversight could result in assorted failures when the offsets - are nontrivial expressions. One example is that a function - parameter reference in such an expression would fail if the function - was inlined. - - - - - - - Avoid postmaster failure if a parallel query requests a background - worker when no postmaster child process array slots remain free - (Tom Lane) - - - - - - - Fix crash triggered by an EvalPlanQual recheck on a table with - a BEFORE UPDATE trigger (Andres Freund) - - - - - - - Fix unexpected relkind error when a query tries to - access a TOAST table (John Hsu, Michael Paquier, Tom Lane) - - - - The error should say that permission is denied, but this case got - broken during code refactoring. - - - - - - - Provide a relevant error context line when an error occurs while - setting GUC parameters during parallel worker startup (Thomas Munro) - - - - - - - Ensure that fsync() is applied only to files - that are opened read/write (Andres Freund, Michael Paquier) - - - - Some code paths tried to do this after opening a file read-only, - but on some platforms that causes bad file descriptor - or similar errors. - - - - - - - Allow encoding conversion to succeed on longer strings than before - (Álvaro Herrera, Tom Lane) - - - - Previously, there was a hard limit of 0.25GB on the input string, - but now it will work as long as the converted output is not over 1GB. - - - - - - - Avoid creating unnecessarily-bulky tuple stores for window functions - (Andrew Gierth) - - - - In some cases the tuple storage would include all columns of the - source table(s), not just the ones that are needed by the query. - - - - - - - Allow repalloc() to give back space when a - large chunk is reduced in size (Tom Lane) - - - - - - - Ensure that temporary WAL and history files are removed at the end - of archive recovery (Sawada Masahiko) - - - - - - - Avoid failure in archive recovery - if recovery_min_apply_delay is enabled - (Fujii Masao) - - - - recovery_min_apply_delay is not typically used in - this configuration, but it should work. - - - - - - - Ignore restore_command, - recovery_end_command, - and recovery_min_apply_delay settings during - crash recovery (Fujii Masao) - - - - Now that these settings can be specified - in postgresql.conf, they could be turned on - during crash recovery, but honoring them then is undesirable. - Ignore these settings until crash recovery is complete. - - - - - - - Fix logical replication failure when publisher and subscriber have - different ideas about a table's replica identity columns - (Jehan-Guillaume de Rorthais, Peter Eisentraut) - - - - Declaring a column as part of the replica identity on the - subscriber, when it does not exist at all on the publisher, led - to negative bitmapset member not allowed errors. - - - - - - - Avoid unwanted delay during shutdown of a logical replication - walsender (Craig Ringer, Álvaro Herrera) - - - - - - - Fix timeout handling in logical replication walreceiver processes - (Julien Rouhaud) - - - - Erroneous logic prevented wal_receiver_timeout - from working in logical replication deployments. - - - - - - - Correctly time-stamp replication messages for logical - decoding (Jeff Janes) - - - - This oversight resulted, for example, - in pg_stat_subscription.last_msg_send_time - usually reading as NULL. - - - - - - - Fix race condition during backend exit, when the backend process has - previously waited for synchronous replication to occur (Dongming Liu) - - - - - - - Avoid logging complaints about abandoned connections when using PAM - authentication (Tom Lane) - - - - libpq-based clients will typically make two connection attempts when - a password is required, since they don't prompt their user for a - password until their first connection attempt fails. Therefore the - server is coded not to generate useless log spam when a client - closes the connection upon being asked for a password. However, - the PAM authentication code hadn't gotten that memo, and would - generate several messages about a phantom authentication failure. - - - - - - - Fix misbehavior of bitshiftright() (Tom Lane) - - - - The bitstring right shift operator failed to zero out padding space - that exists in the last byte of the result when the bitstring length - is not a multiple of 8. While invisible to most operations, any - nonzero bits there would result in unexpected comparison behavior, - since bitstring comparisons don't bother to ignore the extra bits, - expecting them to always be zero. - - - - If you have inconsistent data as a result of saving the output - of bitshiftright() in a table, it's possible to - fix it with something like - -UPDATE mytab SET bitcol = ~(~bitcol) WHERE bitcol != ~(~bitcol); - - - - - - - - Fix result of text position() function (also - known as strpos()) for an empty search string - (Tom Lane) - - - - Historically, and per the SQL standard, the result should be one in - such cases, but 12.0 returned zero. - - - - - - - Fix detection of edge-case integer overflow in interval - multiplication (Yuya Watari) - - - - - - - Avoid crashes if ispell text search dictionaries - contain wrong affix data (Arthur Zakirov) - - - - - - - Avoid memory leak while vacuuming a GiST index (Dilip Kumar) - - - - - - - On Windows, recognize additional spellings of the Norwegian - (Bokmål) locale name (Tom Lane) - - - - - - - Fix libpq to allow trailing whitespace in - the string values of integer parameters (Michael Paquier) - - - - Version 12 tightened libpq's validation - of integer parameters, but disallowing trailing whitespace seems - undesirable. - - - - - - - In libpq, correctly - report CONNECTION_BAD connection status after a - failure caused by a syntactically - invalid parameter value (Lars Kanis) - - - - - - - Avoid compile failure if an ECPG client - includes ecpglib.h while - having ENABLE_NLS defined (Tom Lane) - - - - This risk was created by a misplaced - declaration: ecpg_gettext() should not be - visible to client code. - - - - - - - Fix scheduling of parallel restore of a foreign key constraint on a - partitioned table (Álvaro Herrera) - - - - pg_dump failed to emit full dependency - information for partitioned tables' foreign keys. This could allow - parallel pg_restore to try to recreate a - foreign key constraint too soon. - - - - - - - In pg_dump, ensure stable output order - for similarly-named triggers and row-level-security policy objects - (Benjie Gillam) - - - - Previously, if two triggers on different tables had the same names, - they would be sorted in OID-based order, which is less desirable - than sorting them by table name. Likewise for RLS policies. - - - - - - - In pg_upgrade, reject tables with - columns of type sql_identifier, as that has changed - representation in version 12 (Tomas Vondra) - - - - - - - Improve pg_upgrade's checks for the use - of a data type that has changed representation, such - as line (Tomas Vondra) - - - - The previous coding could be fooled by cases where the data type of - interest underlies a stored column of a domain or composite type. - - - - - - - In pg_rewind - with the option, avoid - updating pg_control - (Alexey Kondratov) - - - - This could lead to failures in - subsequent pg_rewind attempts. - - - - - - - Fix failure in pg_waldump with - the option, when a continuation WAL record ends - exactly at a page boundary (Andrey Lepikhov) - - - - - - - In pg_waldump with - the option, avoid emitting extra - newlines for WAL records involving full-page writes (Andres Freund) - - - - - - - Fix small memory leak in pg_waldump - (Andres Freund) - - - - - - - Put back pqsignal() as an - exported libpq symbol (Tom Lane) - - - - This function was removed on the grounds that no clients should be - using it, but that turns out to break usage of - current libpq with very old versions - of psql, and perhaps other applications. - - - - - - - Fix configure's test for presence of - libperl so that it works on recent Red Hat releases (Tom Lane) - - - - Previously, it could fail if the user sets CFLAGS - to -O0. - - - - - - - Ensure correct code generation for spinlocks on PowerPC (Noah Misch) - - - - The previous spinlock coding allowed the compiler to select register - zero for use with an assembly instruction that does not accept that - register, causing a build failure. We have seen only one long-ago - report that matches this bug, but it could cause problems for people - trying to build modified PostgreSQL code - or use atypical compiler options. - - - - - - - On AIX, don't use the compiler option - (Noah Misch) - - - - This avoids an internal compiler error with xlc v16.1.0, with little - consequence other than changing the format of compiler error messages. - - - - - - - Fix MSVC build process to cope with spaces in the file path of - OpenSSL (Andrew Dunstan) - - - - - - - - - - Release 12 - - - Release date: - 2019-10-03 - - - - Overview - - - Major enhancements in PostgreSQL 12 include: - - - - - - - - - General performance improvements, including: - - - - Optimizations to space utilization and read/write performance for - B-tree indexes - - - - - - Partitioning performance enhancements, including improved query - performance on tables with thousands of partitions, improved - insertion performance with and , and the ability to execute ALTER TABLE ATTACH - PARTITION without blocking queries - - - - - - Automatic (but overridable) inlining - of common table expressions - (CTEs) - - - - - - Reduction of WAL overhead for creation of - GiST, GIN, and - SP-GiST indexes - - - - - - Support for covering GiST indexes, via - the INCLUDE - clause - - - - - - Multi-column most-common-value (MCV) statistics can be defined - via , to support better - plans for queries that test several non-uniformly-distributed - columns - - - - - - - - - Enhancements to administrative functionality, including: - - - - REINDEX - CONCURRENTLY can rebuild an index without - blocking writes to its table - - - - - - can enable/disable page checksums - (used for detecting data corruption) in an offline cluster - - - - - - Progress reporting statistics for , - , , - VACUUM FULL, and - - - - - - - - - - Support for the SQL/JSON - path language - - - - - - Stored generated columns - - - - - - Nondeterministic ICU - collations, enabling case-insensitive and accent-insensitive grouping - and ordering - - - - - - New authentication features, including: - - - - Encryption of TCP/IP connections when using - GSSAPI - authentication - - - - - - Discovery of LDAP servers using DNS SRV records - - - - - - Multi-factor authentication, using the - clientcert=verify-full option combined - with an additional authentication method in - pg_hba.conf - - - - - - - - - - The above items are explained in more detail in the sections below. - - - - - - - Migration to Version 12 - - - A dump/restore using or use of or logical replication is required for those - wishing to migrate data from any previous release. See for general information on migrating to new major - releases. - - - - Version 12 contains a number of changes that may affect compatibility - with previous releases. Observe the following incompatibilities: - - - - - - - - - Remove the special behavior of oid columns (Andres Freund, - John Naylor) - - - - Previously, a normally-invisible oid - column could be specified during table creation using WITH - OIDS; that ability has been removed. Columns can still be - explicitly declared as type oid. Operations on tables - that have columns created using WITH OIDS will - need adjustment. - - - - The system catalogs that previously had - hidden oid columns now have - ordinary oid columns. - Hence, SELECT * will now output those columns, - whereas previously they would be displayed only if selected - explicitly. - - - - - - - - Remove data types abstime, reltime, - and tinterval (Andres Freund) - - - - These are obsoleted by SQL-standard types such - as timestamp. - - - - - - - - Remove the timetravel extension - (Andres Freund) - - - - - - - - Move recovery.conf settings into postgresql.conf - (Masao Fujii, Simon Riggs, Abhijit Menon-Sen, Sergei Kornilov) - - - - recovery.conf is no longer used, - and the server will not start if that file exists. recovery.signal - and standby.signal files are now used to switch - into non-primary mode. The trigger_file setting - has been renamed to . The - standby_mode setting has been removed. - - - - - - - - Do not allow multiple conflicting recovery_target* - specifications (Peter Eisentraut) - - - - Specifically, only allow one of , , - , - , and . Previously, multiple different - instances of these parameters could be specified, and the last one - was honored. Now, only one can be specified, though the same one can - be specified multiple times and the last specification is honored. - - - - - - - - Cause recovery to advance to the latest timeline by default - (Peter Eisentraut) - - - - Specifically, now - defaults to latest. Previously, it defaulted - to current. - - - - - - - - Refactor code for geometric - functions and operators (Emre Hasegeli) - - - - This could lead to more accurate, but slightly different, results - compared to previous releases. Notably, cases involving NaN, - underflow, overflow, and division by zero are handled more - consistently than before. - - - - - - - - Improve performance by using a new algorithm for output - of real - and double precision values (Andrew Gierth) - - - - Previously, displayed floating-point values were rounded to 6 - (for real) or 15 (for double precision) - digits by default, adjusted by the value of - . Now, - whenever extra_float_digits is more than zero (as - it now is by default), only the minimum number of digits required to - preserve the exact binary value are output. The behavior is the - same as before when extra_float_digits is set to - zero or less. - - - - Also, formatting of floating-point exponents is now uniform across - platforms: two digits are used unless three are necessary. In - previous releases, Windows builds always printed three digits. - - - - - - - - random() - and setseed() now behave uniformly across - platforms (Tom Lane) - - - - The sequence of random() values generated - following a setseed() call with a particular - seed value is likely to be different now than before. However, it - will also be repeatable, which was not previously guaranteed because - of interference from other uses of random numbers inside the server. - The SQL random() function now has its own - private per-session state to forestall that. - - - - - - - - Change SQL-style - substring() - to have standard-compliant greediness behavior (Tom Lane) - - - - In cases where the pattern can be matched in more than one way, the - initial sub-pattern is now treated as matching the least possible - amount of text rather than the greatest; for example, a pattern such - as %#"aa*#"% now selects the first group - of a's from the input, not the last group. - - - - - - - - Do not pretty-print the result - of xpath() - or the XMLTABLE construct (Tom Lane) - - - - In some cases, these functions would insert extra whitespace - (newlines and/or spaces) in nodeset values. This is undesirable - since depending on usage, the whitespace might be considered - semantically significant. - - - - - - - - Rename command-line tool - pg_verify_checksums to (Michaël Paquier) - - - - - - - - In , require specification of - -f - to send the dump contents to standard output - (Euler Taveira) - - - - Previously, this happened by default if no destination was - specified, but that was deemed to be unfriendly. - - - - - - - - Disallow non-unique abbreviations - in psql's \pset format - command (Daniel Vérité) - - - - Previously, for example, \pset format a chose - aligned; it will now fail since that could - equally well mean asciidoc. - - - - - - - - In new btree indexes, the maximum index entry length is - reduced by eight bytes, to improve handling of duplicate entries - (Peter Geoghegan) - - - - This means that a operation on an - index pg_upgrade'd from a previous - release could potentially fail. - - - - - - - - Cause DROP IF EXISTS - FUNCTION/PROCEDURE/AGGREGATE/ROUTINE - to generate an error if no argument list is supplied and there are - multiple matching objects (David Rowley) - - - - Also improve the error message in such cases. - - - - - - - - Split the pg_statistic_ext - catalog into two catalogs, and add the pg_stats_ext - view of it (Dean Rasheed, Tomas Vondra) - - - - This change supports hiding potentially-sensitive statistics data - from unprivileged users. - - - - - - - - Remove obsolete pg_constraint.consrc - column (Peter Eisentraut) - - - - This column has been deprecated for a long time, because it did not - update in response to other catalog changes (such as column renamings). - The recommended way to get a text version of a check constraint's - expression from pg_constraint - is pg_get_expr(conbin, conrelid). - pg_get_constraintdef() is also a useful - alternative. - - - - - - - - Remove obsolete pg_attrdef.adsrc - column (Peter Eisentraut) - - - - This column has been deprecated for a long time, because it did not - update in response to other catalog changes (such as column renamings). - The recommended way to get a text version of a default-value expression - from pg_attrdef is pg_get_expr(adbin, - adrelid). - - - - - - - - Mark table columns of type name as having - C collation by default (Tom Lane, Daniel Vérité) - - - - The comparison operators for data type name can now use - any collation, rather than always using C collation. - To preserve the previous semantics of queries, columns of - type name are now explicitly marked as - having C collation. A side effect of this is that - regular-expression operators on name columns will now - use the C collation by default, not the database - collation, to determine the behavior of locale-dependent regular - expression patterns (such as \w). If you want - non-C behavior for a regular expression on a name - column, attach an explicit COLLATE clause. (For - user-defined name columns, another possibility is to - specify a different collation at table creation time; but that just - moves the non-backwards-compatibility to the comparison operators.) - - - - - - - - Treat object-name columns in - the information_schema - views as being of type name, not varchar - (Tom Lane) - - - - Per the SQL standard, object-name columns in - the information_schema views are declared - as being of domain type sql_identifier. - In PostgreSQL, the underlying catalog - columns are really of type name. This change - makes sql_identifier be a domain - over name, rather than varchar as before. - This eliminates a semantic mismatch in comparison and sorting - behavior, which can greatly improve the performance of queries - on information_schema views that restrict - an object-name column. Note however that inequality restrictions, - for example - -SELECT ... FROM information_schema.tables WHERE table_name < 'foo'; - - will now use C-locale comparison semantics by - default, rather than the database's default collation as before. - Sorting on these columns will also follow C ordering - rules. The previous behavior (and inefficiency) can be enforced by - adding a COLLATE "default" clause. - - - - - - - - Remove the ability to disable dynamic shared memory (Kyotaro - Horiguchi) - - - - Specifically, - can no longer be set to none. - - - - - - - - Parse libpq integer connection parameters more strictly (Fabien - Coelho) - - - - In previous releases, using an incorrect integer value for - connection parameters connect_timeout, - keepalives, keepalives_count, - keepalives_idle, - keepalives_interval and port - resulted in libpq either ignoring those values or failing with - incorrect error messages. - - - - - - - - - Changes - - - Below you will find a detailed account of the changes between - PostgreSQL 12 and the previous - major release. - - - - Server - - - <link linkend="ddl-partitioning">Partitioning</link> - - - - - - - - Improve performance of many operations on partitioned tables - (Amit Langote, David Rowley, Tom Lane, Álvaro Herrera) - - - - Allow tables with thousands of child partitions to be processed - efficiently by operations that only affect a small number of - partitions. - - - - - - - - Allow foreign keys - to reference partitioned tables (Álvaro Herrera) - - - - - - - - Improve speed of COPY into partitioned tables - (David Rowley) - - - - - - - - Allow partition bounds to be any expression (Kyotaro Horiguchi, - Tom Lane, Amit Langote) - - - - Such expressions are evaluated at partitioned-table creation time. - Previously, only simple constants were allowed as partition bounds. - - - - - - - - Allow CREATE TABLE's tablespace specification - for a partitioned table to affect the tablespace of its children - (David Rowley, Álvaro Herrera) - - - - - - - - Avoid sorting when partitions are already being scanned in the - necessary order (David Rowley) - - - - - - - - ALTER TABLE ATTACH - PARTITION is now performed with reduced locking - requirements (Robert Haas) - - - - - - - - Add partition introspection functions (Michaël Paquier, Álvaro - Herrera, Amit Langote) - - - - The new function pg_partition_root() - returns the top-most parent of a partition tree, pg_partition_ancestors() - reports all ancestors of a partition, and pg_partition_tree() - displays information about partitions. - - - - - - - - Include partitioned indexes in the system view pg_indexes - (Suraj Kharage) - - - - - - - - Add psql command \dP - to list partitioned tables and indexes (Pavel Stehule) - - - - - - - - Improve psql \d - and \z display of partitioned tables (Pavel - Stehule, Michaël Paquier, Álvaro Herrera) - - - - - - - - Fix bugs that could cause ALTER TABLE DETACH - PARTITION to leave behind incorrect dependency state, - allowing subsequent operations to misbehave, for example by not - dropping a former partition child index when its table is dropped - (Tom Lane) - - - - - - - - - Indexes - - - - - - - - Improve performance and space utilization of btree indexes with - many duplicates (Peter Geoghegan, Heikki Linnakangas) - - - - Previously, duplicate index entries were stored unordered within - their duplicate groups. This caused overhead during index - inserts, wasted space due to excessive page splits, and it reduced - VACUUM's ability to recycle entire pages. - Duplicate index entries are now sorted in heap-storage order. - - - - Indexes pg_upgrade'd from previous - releases will not have these benefits. - - - - - - - - Allow multi-column btree indexes to be smaller (Peter Geoghegan, - Heikki Linnakangas) - - - - Internal pages and min/max leaf page indicators now only store - index keys until the change key, rather than all indexed keys. - This also improves the locality of index access. - - - - Indexes pg_upgrade'd from previous - releases will not have these benefits. - - - - - - - - Improve speed of btree index insertions by reducing locking - overhead (Alexander Korotkov) - - - - - - - - Support INCLUDE columns - in GiST indexes (Andrey Borodin) - - - - - - - - Add support for nearest-neighbor (KNN) searches - of SP-GiST indexes (Nikita Glukhov, - Alexander Korotkov, Vlad Sterzhanov) - - - - - - - - - Reduce the WAL write overhead - of GiST, GIN, and - SP-GiST index creation (Anastasia Lubennikova, - Andrey V. Lepikhov) - - - - - - - - Allow index-only scans to be more efficient on indexes with many - columns (Konstantin Knizhnik) - - - - - - - - Improve the performance of vacuum scans of GiST indexes (Andrey - Borodin, Konstantin Kuznetsov, Heikki Linnakangas) - - - - - - - - Delete empty leaf pages during GiST - VACUUM (Andrey Borodin) - - - - - - - - Reduce locking requirements for index renaming (Peter Eisentraut) - - - - - - - - - Optimizer - - - - - - - - Allow to create - most-common-value statistics for multiple columns (Tomas Vondra) - - - - This improves optimization for queries that test several columns, - requiring an estimate of the combined effect of - several WHERE clauses. If the columns are - correlated and have non-uniform distributions then multi-column - statistics will allow much better estimates. - - - - - - - - Allow common table expressions - (CTEs) to be inlined into the outer query - (Andreas Karlsson, Andrew Gierth, David Fetter, Tom Lane) - - - - Specifically, CTEs are automatically inlined if - they have no side-effects, are not recursive, and are referenced - only once in the query. Inlining can be prevented by - specifying MATERIALIZED, or forced for - multiply-referenced CTEs by - specifying NOT MATERIALIZED. Previously, - CTEs were never inlined and were always - evaluated before the rest of the query. - - - - - - - - Allow control over when generic plans are used for prepared - statements (Pavel Stehule) - - - - This is controlled by the - server parameter. - - - - - - - - Improve optimization of partition and UNION ALL - queries that have only a single child (David Rowley) - - - - - - - - Improve processing of domains that - have no check constraints (Tom Lane) - - - - Domains that are being used purely as type aliases no longer cause - optimization difficulties. - - - - - - - - Pre-evaluate calls of LEAST - and GREATEST when their arguments are constants - (Vik Fearing) - - - - - - - - Improve optimizer's ability to verify that partial indexes - with IS NOT NULL conditions are usable in - queries (Tom Lane, James Coleman) - - - - Usability can now be recognized in more cases where the calling - query involves casts or - large x IN - (array) clauses. - - - - - - - - Compute ANALYZE statistics using the collation - defined for each column (Tom Lane) - - - - Previously, the database's default collation was used for all - statistics. This potentially gives better optimizer behavior for - columns with non-default collations. - - - - - - - - Improve selectivity estimates for inequality comparisons - on ctid - columns (Edmund Horner) - - - - - - - - Improve optimization of joins on columns of type tid - (Tom Lane) - - - - These changes primarily improve the efficiency of self-joins - on ctid columns. - - - - - - - - Fix the leakproofness designations of some btree comparison operators - and support functions (Tom Lane) - - - - This allows some optimizations that previously would not have been - applied in the presence of security barrier views or row-level - security. - - - - - - - - - General Performance - - - - - - - - Enable Just-in-Time - (JIT) compilation by default, if the server - has been built with support for it (Andres Freund) - - - - Note that this support is not built by default, but has to be - selected explicitly while configuring the build. - - - - - - - - Speed up keyword lookup (John Naylor, Joerg Sonnenberger, Tom Lane) - - - - - - - - Improve search performance for multi-byte characters - in position() and related functions (Heikki - Linnakangas) - - - - - - - - Allow toasted - values to be minimally decompressed (Paul Ramsey) - - - - This is useful for routines that only need to examine the initial - portion of a toasted field. - - - - - - - - Allow ALTER TABLE ... SET - NOT NULL to avoid unnecessary table scans (Sergei - Kornilov) - - - - This can be optimized when the table's column constraints can be - recognized as disallowing nulls. - - - - - - - - Allow ALTER TABLE ... SET DATA TYPE changing between - timestamp and timestamptz to avoid a - table rewrite when the session time zone is UTC - (Noah Misch) - - - - In the UTC time zone, these two data types are - binary compatible. - - - - - - - - Improve speed in converting strings to - int2 or int4 integers (Andres Freund) - - - - - - - - Allow parallelized queries when in SERIALIZABLE - isolation mode (Thomas Munro) - - - - Previously, parallelism was disabled when in this mode. - - - - - - - - Use pread() and pwrite() - for random I/O (Oskari Saarenmaa, Thomas Munro) - - - - This reduces the number of system calls required for I/O. - - - - - - - - Improve the speed of setting the process title on - FreeBSD (Thomas Munro) - - - - - - - - - Monitoring - - - - - - - - Allow logging of statements from only a percentage of transactions - (Adrien Nayrat) - - - - The parameter - controls this. - - - - - - - - Add progress reporting to CREATE INDEX and - REINDEX operations (Álvaro Herrera, Peter - Eisentraut) - - - - Progress is reported in the pg_stat_progress_create_index - system view. - - - - - - - - Add progress reporting to CLUSTER and - VACUUM FULL (Tatsuro Yamada) - - - - Progress is reported in the pg_stat_progress_cluster - system view. - - - - - - - - Add progress reporting to - (Michael Banck, Bernd Helmle) - - - - This is enabled with the option . - - - - - - - - Add counter of checksum failures to - pg_stat_database (Magnus Hagander) - - - - - - - - Add tracking of global objects in system view - pg_stat_database (Julien Rouhaud) - - - - Global objects are shown with a pg_stat_database.datid - value of zero. - - - - - - - - Add the ability to list the contents of the archive directory - (Christoph Moench-Tegeder) - - - - The function is pg_ls_archive_statusdir(). - - - - - - - - Add the ability to list the contents of temporary directories - (Nathan Bossart) - - - - The function, pg_ls_tmpdir(), - optionally allows specification of a tablespace. - - - - - - - - Add information about the client certificate to the system view pg_stat_ssl - (Peter Eisentraut) - - - - The new columns are client_serial - and issuer_dn. Column - clientdn has been renamed to - client_dn for clarity. - - - - - - - - Restrict visibility of rows in pg_stat_ssl - for unprivileged users (Peter Eisentraut) - - - - - - - - At server start, emit a log message including the server - version number (Christoph Berg) - - - - - - - - Prevent logging incomplete startup packet if a new - connection is immediately closed (Tom Lane) - - - - This avoids log spam from certain forms of monitoring. - - - - - - - - Include the , if set, - in log messages (Don Seiler) - - - - - - - - Make the walreceiver set its application name to the cluster name, - if set (Peter Eisentraut) - - - - - - - - Add the timestamp of the last received standby message to pg_stat_replication - (Lim Myungkyu) - - - - - - - - Add a wait event for fsync - of WAL segments (Konstantin Knizhnik) - - - - - - - - - <acronym>Authentication</acronym> - - - - - - - - Add GSSAPI - encryption support (Robbie Harwood, Stephen Frost) - - - - This feature allows TCP/IP connections to be encrypted when using - GSSAPI authentication, without having to set up a separate - encryption facility such as SSL. - In support of this, add hostgssenc - and hostnogssenc record types in pg_hba.conf - for selecting connections that do or do not use GSSAPI encryption, - corresponding to the existing hostssl - and hostnossl record types. - There is also a new - libpq option, and a system - view. - - - - - - - - Allow the clientcert - pg_hba.conf option to check that the database - user name matches the client certificate's common name - (Julian Markwort, Marius Timmer) - - - - This new check is enabled with - clientcert=verify-full. - - - - - - - - Allow discovery of an LDAP server using - DNS SRV records (Thomas Munro) - - - - This avoids the requirement of specifying - ldapserver. It is only supported if - PostgreSQL is compiled with - OpenLDAP. - - - - - - - - - Server Configuration - - - - - - - - Add ability to enable/disable cluster checksums using (Michael Banck, Michaël Paquier) - - - - The cluster must be shut down for these operations. - - - - - - - - Reduce the default value of to 2ms (Tom Lane) - - - - This allows autovacuum operations to proceed faster by default. - - - - - - - - Allow to specify - sub-millisecond delays, by accepting fractional values (Tom Lane) - - - - - - - - Allow time-based server parameters to use units of microseconds - (us) (Tom Lane) - - - - - - - - Allow fractional input for integer server parameters (Tom Lane) - - - - For example, SET work_mem = '30.1GB' is now - allowed, even though work_mem is an integer - parameter. The value will be rounded to an integer after any - required units conversion. - - - - - - - - Allow units to be defined for floating-point server parameters - (Tom Lane) - - - - - - - - Add and server parameters to control - WAL file recycling (Jerry Jelinek) - - - - Avoiding file recycling can be beneficial on copy-on-write file - systems like ZFS. - - - - - - - - Add server parameter to - control the server's TCP timeout (Ryohei Nagaura) - - - - - - - - Allow control of the minimum and maximum SSL - protocol versions (Peter Eisentraut) - - - - The server parameters are and . - - - - - - - - Add server parameter to report - the SSL library version used by the server - (Peter Eisentraut) - - - - - - - - Add server parameter - to control the type of shared memory to use (Andres Freund) - - - - This allows selection of System V - shared memory, if desired. - - - - - - - - - - - Streaming Replication and Recovery - - - - - - - - Allow some recovery parameters to be changed with reload (Peter - Eisentraut) - - - - These parameters are , - , , and . - - - - - - - - Allow the streaming replication timeout () to be set per connection - (Takayuki Tsunakawa) - - - - Previously, this could only be set cluster-wide. - - - - - - - - Add function pg_promote() - to promote standbys to primaries (Laurenz Albe, Michaël Paquier) - - - - Previously, this operation was only possible by using or creating a trigger file. - - - - - - - - Allow replication slots to be copied (Masahiko Sawada) - - - - The functions for this are pg_copy_physical_replication_slot() - and pg_copy_logical_replication_slot(). - - - - - - - - Make not count as part of - (Alexander Kukushkin) - - - - - - - - Add an explicit value of current for (Peter Eisentraut) - - - - - - - - Make recovery fail if a two-phase transaction - status file is corrupt (Michaël Paquier) - - - - Previously, a warning was logged and recovery continued, - allowing the transaction to be lost. - - - - - - - - - Utility Commands - - - - - - - - Add CONCURRENTLY - option to allow reindexing without locking out writes (Michaël - Paquier, Andreas Karlsson, Peter Eisentraut) - - - - This is also controlled by the - application's option. - - - - - - - - Add support for generated - columns (Peter Eisentraut) - - - - The content of generated columns are computed from expressions - (including references to other columns in the same table) - rather than being specified by INSERT or - UPDATE commands. - - - - - - - - Add a WHERE clause - to COPY FROM to - control which rows are accepted (Surafel Temesgen) - - - - This provides a simple way to filter incoming data. - - - - - - - - Allow enumerated values to be added more flexibly - (Andrew Dunstan, Tom Lane, Thomas Munro) - - - - Previously, ALTER TYPE - ... ADD VALUE could not be called in a transaction - block, unless it was part of the same transaction that created the - enumerated type. Now it can be called in a later transaction, so - long as the new enumerated value is not referenced until after it is - committed. - - - - - - - - Add commands to end a transaction and start a new one (Peter - Eisentraut) - - - - The commands are COMMIT AND - CHAIN - and ROLLBACK AND - CHAIN. - - - - - - - - Add and CREATE - TABLE options to prevent VACUUM - from truncating trailing empty pages (Takayuki Tsunakawa) - - - - These options are vacuum_truncate and - toast.vacuum_truncate. Use of these options - reduces VACUUM's locking requirements, but - prevents returning disk space to the operating system. - - - - - - - - Allow VACUUM to skip index cleanup - (Masahiko Sawada) - - - - This change adds a VACUUM command - option INDEX_CLEANUP as well as a table storage - option vacuum_index_cleanup. Use of this option - reduces the ability to reclaim space and can lead to index bloat, - but it is helpful when the main goal is to freeze old tuples. - - - - - - - - Add the ability to skip VACUUM and - ANALYZE operations on tables that cannot be - locked immediately (Nathan Bossart) - - - - This option is called SKIP_LOCKED. - - - - - - - - Allow VACUUM and ANALYZE - to take optional Boolean argument specifications (Masahiko Sawada) - - - - - - - - Prevent , - VACUUM and ANALYZE - from requesting a lock on - tables for which the user lacks permission (Michaël Paquier) - - - - This prevents unauthorized locking, which could interfere with - user queries. - - - - - - - - Add option - SETTINGS to output non-default optimizer - settings (Tomas Vondra) - - - - This output can also be obtained when using - by setting auto_explain.log_settings. - - - - - - - - Add OR REPLACE option to - - (Andrew Gierth) - - - - - - - - Allow modifications of system catalogs' options using (Peter Eisentraut) - - - - Modifications of catalogs' reloptions and - autovacuum settings are now supported. (Setting is still required.) - - - - - - - - Use all key columns' names when selecting default constraint - names for foreign keys (Peter Eisentraut) - - - - Previously, only the first column name was included in the constraint - name, resulting in ambiguity for multi-column foreign keys. - - - - - - - - - Data Types - - - - - - - - Update assorted knowledge about Unicode to match Unicode 12.1.0 - (Peter Eisentraut) - - - - This fixes, for example, cases - where psql would misformat output - involving combining characters. - - - - - - - - Update Snowball stemmer dictionaries with support for new languages - (Arthur Zakirov) - - - - This adds word stemming support for Arabic, Indonesian, Irish, - Lithuanian, Nepali, and Tamil to full - text search. - - - - - - - - Allow creation of collations that report - string equality for strings that are not bit-wise equal (Peter - Eisentraut) - - - - This feature supports nondeterministic collations - that can define case- and accent-agnostic equality comparisons. - Thus, for example, a case-insensitive uniqueness constraint on a - text column can be made more easily than before. This is only - supported for ICU collations. - - - - - - - - Add support for ICU collation attributes on older - ICU versions (Peter Eisentraut) - - - - This allows customization of the collation rules in a consistent way - across all ICU versions. - - - - - - - - Allow data - type name - to more seamlessly be compared to other text types (Tom Lane) - - - - Type name now behaves much like a domain over - type text that has default collation C. - This allows cross-type comparisons to be processed more efficiently. - - - - - - - - - Functions - - - - - - - - Add support for the SQL/JSON path language - (Nikita Glukhov, Teodor Sigaev, Alexander Korotkov, Oleg Bartunov, - Liudmila Mantrova) - - - - This allows execution of complex queries on JSON - values using an SQL-standard language. - - - - - - - - Add support for hyperbolic - functions (Lætitia Avrot) - - - - Also add log10() as an alias for - log(), for standards compliance. - - - - - - - Improve the accuracy of statistical aggregates like variance() - by using more precise algorithms (Dean Rasheed) - - - - - - - - Allow date_trunc() - to have an additional argument to control the time zone (Vik - Fearing, Tom Lane) - - - - This is faster and simpler than using the AT TIME - ZONE clause. - - - - - - - - Adjust to_timestamp()/to_date() - functions to be more forgiving of template mismatches (Artur - Zakirov, Alexander Korotkov, Liudmila Mantrova) - - - - This new behavior more closely matches the - Oracle functions of the same name. - - - - - - - - Fix assorted bugs in XML functions - (Pavel Stehule, Markus Winand, Chapman Flack) - - - - Specifically, in XMLTABLE, - xpath(), and xmlexists(), - fix some cases where nothing was output for a node, or an - unexpected error was thrown, or necessary escaping of XML special - characters was omitted. - - - - - - - - Allow the BY VALUE clause - in XMLEXISTS and XMLTABLE - (Chapman Flack) - - - - This SQL-standard clause has no effect - in PostgreSQL's implementation, but it - was unnecessarily being rejected. - - - - - - - - Prevent current_schema() - and current_schemas() from being run by - parallel workers, as they are not parallel-safe (Michaël Paquier) - - - - - - - - Allow RECORD and RECORD[] to be used - as column types in a query's column definition list for a table function that is declared - to return RECORD (Elvis Pranskevichus) - - - - - - - - - <link linkend="plpgsql">PL/pgSQL</link> - - - - - - - - Allow SQL commands and variables with the same names as those - commands to be used in the same PL/pgSQL function (Tom Lane) - - - - For example, allow a variable called comment to - exist in a function that calls - the COMMENT SQL command. - Previously this combination caused a parse error. - - - - - - - - Add new optional warning and error checks to PL/pgSQL (Pavel - Stehule) - - - - The new checks allow for run-time validation of - INTO column counts and single-row results. - - - - - - - - - Client Interfaces - - - - - - - - Add connection parameter - to control libpq's TCP - timeout (Ryohei Nagaura) - - - - - - - - Allow libpq (and thus - psql) to report only the - SQLSTATE value in error messages (Didier Gautheron) - - - - - - - - Add libpq - function PQresultMemorySize() - to report the memory used by a query result (Lars Kanis, Tom Lane) - - - - - - - - Remove the no-display/debug flag from libpq's - options connection parameter (Peter Eisentraut) - - - - This allows this parameter to be set by - postgres_fdw. - - - - - - - - Allow to create variables of data type - bytea (Ryo Matsumura) - - - - This allows ECPG clients to interact with bytea data - directly, rather than using an encoded form. - - - - - - - - Add PREPARE AS support to - ECPG (Ryo Matsumura) - - - - - - - - - Client Applications - - - - - - - - Allow to select tables for vacuum - based on their wraparound horizon (Nathan Bossart) - - - - The options are and - . - - - - - - - - Allow vacuumdb to disable waiting for locks - or skipping all-visible pages (Nathan Bossart) - - - - The options are and - . - - - - - - - - Add colorization to the output of command-line utilities (Peter - Eisentraut) - - - - This is enabled by setting the environment variable - PG_COLOR to always - or auto. The specific colors used can be - adjusted by setting the environment variable - PG_COLORS, using ANSI escape codes for colors. - For example, the default behavior is equivalent to - PG_COLORS="error=01;31:warning=01;35:locus=01". - - - - - - - <xref linkend="app-psql"/> - - - - - - - - Add CSV table output mode in - psql (Daniel Vérité) - - - - This is controlled by \pset format csv or the - command-line option. - - - - - - - - Show the manual page URL in - psql's \help output - for a SQL command (Peter Eisentraut) - - - - - - - - Display the IP address in - psql's \conninfo - (Fabien Coelho) - - - - - - - - Improve tab completion of CREATE TABLE, - CREATE TRIGGER, - CREATE EVENT TRIGGER, - ANALYZE, EXPLAIN, - VACUUM, ALTER TABLE, - ALTER INDEX, ALTER DATABASE, - and ALTER INDEX ALTER COLUMN - (Dagfinn Ilmari Mannsåker, Tatsuro Yamada, Michaël Paquier, - Tom Lane, Justin Pryzby) - - - - - - - - - <link linkend="pgbench"><application>pgbench</application></link> - - - - - - - - Allow values produced by queries to be assigned - to pgbench variables (Fabien Coelho, - Álvaro Herrera) - - - - The command for this is \gset. - - - - - - - - Improve precision of pgbench's - option (Tom Lane) - - - - - - - Improve pgbench's error reporting with - clearer messages and return codes (Peter Eisentraut) - - - - - - - - - - - Server Applications - - - - - - - - Allow control of log file rotation via - (Kyotaro Horiguchi, Alexander Kuzmenkov, Alexander Korotkov) - - - - Previously, this was only possible via an SQL - function or a process signal. - - - - - - - - Properly detach the new server process - during pg_ctl start - (Paul Guo) - - - - This prevents the server from being shut down if the shell script - that invoked pg_ctl is interrupted later. - - - - - - - - Allow to use the file system's cloning - feature, if there is one (Peter Eisentraut) - - - - The option has the advantages of - , while preventing the old cluster from - being changed after the new cluster has started. - - - - - - - - Allow specification of the socket directory to use - in pg_upgrade (Daniel Gustafsson) - - - - This is controlled by ; the default - is the current directory. - - - - - - - - Allow to disable fsync operations - (Michaël Paquier) - - - - This is controlled by the option. - - - - - - - - Allow to disable fsync operations - (Michaël Paquier) - - - - - - - - Fix to report accurate - open_datasync durations on - Windows (Laurenz Albe) - - - - - - - <link linkend="app-pgdump"><application>pg_dump</application></link>, - <link linkend="app-pg-dumpall"><application>pg_dumpall</application></link>, - <link linkend="app-pgrestore"><application>pg_restore</application></link> - - - - - - - - When pg_dump emits data - with INSERT commands rather - than COPY, allow more than one data row to be - included in each INSERT (Surafel Temesgen, - David Rowley) - - - - The option controlling this is . - - - - - - - - Allow pg_dump to emit INSERT - ... ON CONFLICT DO NOTHING (Surafel Temesgen) - - - - This avoids conflict failures during restore. - The option is . - - - - - - - - Decouple the order of operations in a - parallel pg_dump from the order used by - a subsequent parallel pg_restore (Tom - Lane) - - - - This allows pg_restore to perform - more-fully-parallelized parallel restores, especially in cases - where the original dump was not done in parallel. Scheduling of a - parallel pg_dump is also somewhat - improved. - - - - - - - - Allow the setting to be - specified for pg_dump and - pg_dumpall (Andrew Dunstan) - - - - This is primarily useful for making dumps that are exactly - comparable across different source server versions. It is not - recommended for normal use, as it may result in loss of precision - when the dump is restored. - - - - - - - - Add option to - pg_dumpall (Andrew Dunstan) - - - - - - - - - - - Source Code - - - - - - - - Add command to create - new table types (Andres Freund, Haribabu Kommi, Álvaro Herrera, - Alexander Korotkov, Dmitry Dolgov) - - - - This enables the development of new table - access methods, which can optimize storage for different - use cases. The existing heap access method - remains the default. - - - - - - - - Add planner support - function interfaces to improve optimizer estimates, - inlining, and indexing for functions (Tom Lane) - - - - This allows extensions to create planner support functions that - can provide function-specific selectivity, cost, and row-count - estimates that can depend on the function's arguments. Support - functions can also supply simplified representations and index - conditions, greatly expanding optimization possibilities. - - - - - - - - Simplify renumbering manually-assigned OIDs, and establish a new - project policy for management of such OIDs (John Naylor, Tom Lane) - - - - Patches that manually assign OIDs for new built-in objects (such as - new functions) should now randomly choose OIDs in the range - 8000—9999. At the end of a development cycle, the OIDs used - by committed patches will be renumbered down to lower numbers, - currently somewhere in the 4xxx range, - using the new renumber_oids.pl - script. This approach should greatly reduce the odds of OID - collisions between different in-process patches. - - - - While there is no specific policy reserving any OIDs for external - use, it is recommended that forks and other projects needing - private manually-assigned OIDs use numbers in the high - 7xxx range. This will avoid conflicts - with recently-merged patches, and it should be a long time before - the core project reaches that range. - - - - - - - - Build Cygwin binaries using dynamic - instead of static libraries (Marco Atzeri) - - - - - - - - Remove configure switch - (Michaël Paquier) - - - - A strong random-number source is now required. - - - - - - - - printf-family functions, as well - as strerror - and strerror_r, now behave uniformly across - platforms within Postgres code (Tom Lane) - - - - Notably, printf - understands %m everywhere; on - Windows, strerror copes with Winsock error - codes (it used to do so in backend but not frontend code); - and strerror_r always follows the GNU return - convention. - - - - - - - - Require a C99-compliant compiler, and MSVC - 2013 or later on Windows (Andres Freund) - - - - - - - - Use pandoc, - not lynx, for generating plain-text - documentation output files (Peter Eisentraut) - - - - This affects only the INSTALL file generated - during make dist and the seldom-used - plain-text postgres.txt output file. - Pandoc produces better output than lynx and avoids some - locale/encoding issues. Pandoc version 1.13 or later is required. - - - - - - - - Support use of images in the PostgreSQL - documentation (Jürgen Purtz) - - - - - - - - - Additional Modules - - - - - - - - Allow ORDER BY sorts - and LIMIT clauses to be pushed - to foreign servers in more - cases (Etsuro Fujita) - - - - - - - - Improve optimizer cost accounting for - postgres_fdw queries (Etsuro Fujita) - - - - - - - - Properly honor WITH CHECK OPTION on views - that reference postgres_fdw tables - (Etsuro Fujita) - - - - While CHECK OPTIONs on - postgres_fdw tables are ignored (because - the reference is foreign), views on such tables are considered - local, so this change enforces CHECK OPTIONs - on them. Previously, only INSERTs and - UPDATEs with RETURNING - clauses that returned CHECK OPTION values - were validated. - - - - - - - - Allow pg_stat_statements_reset() - to be more granular (Haribabu Kommi, Amit Kapila) - - - - The function now allows reset of statistics for specific databases, - users, and queries. - - - - - - - - Allow control of the log level - (Tom Dunstan, Andrew Dunstan) - - - - The default is LOG. - - - - - - - - Update rules with new - punctuation and symbols (Hugh Ranalli, Michaël Paquier) - - - - - - - - Allow unaccent to handle some accents - encoded as combining characters (Hugh Ranalli) - - - - - - - - Allow unaccent to remove accents from - Greek characters (Tasos Maschalidis) - - - - - - - - Add a parameter to - 's bt_index_parent_check() - function to check each index tuple from the root of the tree - (Peter Geoghegan) - - - - - - - - Improve and - option handling to match other commands (Tatsuro Yamada) - - - - - - - - - - - Acknowledgments - - - The following individuals (in alphabetical order) have contributed to this - release as patch authors, committers, reviewers, testers, or reporters of - issues. - - - - Abhijit Menon-Sen - Achilleas Mantzios - Adam Berlin - Adam Bielanski - Aditya Toshniwal - Adrien Nayrat - Alan Jackson - Albert Schabhuetl - Aleksander Alekseev - Alex Aktsipetrov - Alex Kliukin - Alex Macy - Alexander Korotkov - Alexander Kukushkin - Alexander Kuzmenkov - Alexander Lakhin - Alexandra Ryzhevich - Alexey Bashtanov - Alexey Ermakov - Alexey Kondratov - Alexey Kryuchkov - Alexey Stepanov - Allison Kaptur - Álvaro Herrera - Alyssa Ross - Amit Kapila - Amit Khandekar - Amit Langote - Amul Sul - Anastasia Lubennikova - André Hänsel - Andrea Gelmini - Andreas Joseph Krogh - Andreas Karlsson - Andreas Kunert - Andreas Scherbaum - Andreas Seltenreich - Andrei Yahorau - Andres Freund - Andrew Dunstan - Andrew Fletcher - Andrew Gierth - Andrew Krasichkov - Andrey Borodin - Andrey Klychkov - Andrey Lepikhov - Andy Abelisto - Anthony Greene - Anthony Skorski - Antonin Houska - Arne Roland - Arseny Sher - Arthur Zakirov - Ash Marath - Ashutosh Bapat - Ashutosh Sharma - Ashwin Agrawal - Aya Iwata - Bartosz Polnik - Basil Bourque - Bernd Helmle - Brad DeJong - Brigitte Blanc-Lafay - Bruce Klein - Bruce Momjian - Bruno Wolff - Chapman Flack - Chen Huajun - Chris Travers - Chris Wilson - Christian Hofstaedtler - Christoph Berg - Christoph Moench-Tegeder - Clemens Ladisch - Colm McHugh - Corey Huinker - Craig Ringer - Dagfinn Ilmari Mannsåker - Daisuke Higuchi - Daniel Fiori - Daniel Gustafsson - Daniel Vérité - Daniel Westermann - Daniel Wilches - Darafei Praliaskouski - Daryl Waycott - Dave Cramer - David Binderman - David Fetter - David G. Johnston - David Rowley - David Steele - Davy Machado - Dean Rasheed - Derek Hans - Derek Nelson - Devrim Gündüz - Dian Fay - Didier Gautheron - Dilip Kumar - Dmitry Dolgov - Dmitry Marakasov - Dmitry Molotkov - Dmitry Shalashov - Don Seiler - Donald Dong - Doug Rady - Edmund Horner - Eduards Bezverhijs - Elvis Pranskevichus - Emanuel Araújo - Emre Hasegeli - Eric Cyr - Erik Rijkers - Ertugrul Kahveci - Etsuro Fujita - Eugen Konkov - Euler Taveira - Fabien Coelho - Fabrízio de Royes Mello - Feike Steenbergen - Filip Rembialkowski - Gaby Schilders - Geert Lobbestael - George Tarasov - Georgios Kokolatos - Gianni Ciolli - Gilles Darold - Greg Stark - Grigory Smolkin - Guillaume Lelarge - Gunnlaugur Thor Briem - Gurjeet Singh - Hadi Moshayedi - Hailong Li - Hans Buschmann - Haribabu Kommi - Haruka Takatsuka - Hayato Kuroda - Heikki Linnakangas - Hironobu Suzuki - Hubert Lubaczewski - Hugh Ranalli - Ian Barwick - Ibrar Ahmed - Ildar Musin - Insung Moon - Ioseph Kim - Isaac Morland - Ivan Panchenko - Jack Kelly - Jacob Champion - Jaime Casanova - Jakob Egger - Jakub Glapa - Jakub Janecek - James Coleman - James Inform - James Robinson - James Sewell - James Tomson - Jan Chochol - Jaroslav Sivy - Jean-Christophe Arnu - Jean-Marc Voillequin - Jean-Pierre Pelletier - Jeevan Chalke - Jeevan Ladhe - Jeff Davis - Jeff Janes - Jeremy Evans - Jeremy Schneider - Jeremy Smith - Jerry Jelinek - Jesper Pedersen - Jianing Yang - Jie Zhang - Jim Nasby - Jimmy Yih - Joe Conway - Joe Wildish - Joerg Sonnenberger - John Klann - John Naylor - Jonah Harris - Jonathan S. Katz - Jorge Gustavo Rocha - José Arthur Benetasso Villanova - Joshua D. Drake - Juan José Santamaría Flecha - Julian Hsiao - Julian Markwort - Julian Schauder - Julien Rouhaud - Jürgen Purtz - Jürgen Strobel - Justin Pryzby - Kaiting Chen - Karen Huddleston - Karl Czajkowski - Karl O. Pinc - Keiichi Hirobe - Keith Fiske - Ken Tanzer - Kenji Uno - Kevin Grittner - Kevin Hale Boyes - Kieran McCusker - Kirk Jamison - Kohei KaiGai - Konstantin Knizhnik - Konstantin Kuznetsov - Kristjan Tammekivi - Kuntal Ghosh - Kyle Samson - Kyotaro Horiguchi - Lætitia Avrot - Lars Kanis - Laurenz Albe - Lim Myungkyu - Liu Huailing - Liudmila Mantrova - Lloyd Albin - Luca Ferrari - Luis M. Carril - Lukas Eder - Lukas Fittl - Madelaine Thibaut - Madeleine Thompson - Magnus Hagander - Mahendra Singh - Mai Peng - Maksim Milyutin - Maksym Boguk - Malthe Borch - Manuel Rigger - Marco Atzeri - Marco Slot - Marina Polyakova - Mario De Frutos Dieguez - Marius Timmer - Mark Chambers - Mark Dilger - Marko Tiikkaja - Markus Winand - Martín Marqués - Masahiko Sawada - Masao Fujii - Mateusz Guzik - Mathias Brossard - Matt Williams - Matthias Otterbach - Matvey Arye - Melanie Plageman - Mi Tar - Michael Banck - Michael Davidson - Michael Meskes - Michael Paquier - Michael Vitale - Michel Pelletier - Mikalai Keida - Mike Palmiotto - Mithun Cy - Morgan Owens - Murat Kabilov - Nathan Bossart - Nawaz Ahmed - Neeraj Kumar - Nick Barnes - Nico Williams - Nikita Glukhov - Nikolay Shaplov - Ning Yu - Nishant Fnu - Noah Misch - Norbert Benkocs - Noriyoshi Shinoda - Oleg Bartunov - Oleg Samoilov - Oleksii Kliukin - Ondrej Bouda - Oskari Saarenmaa - Pan Bian - Patrick Francelle - Patrick McHardy - Paul A. Jungwirth - Paul Bonaud - Paul Guo - Paul Martinez - Paul Ramsey - Paul Schaap - Paul van der Linden - Pavan Deolasee - Pavel Oskin - Pavel Raiskup - Pavel Stehule - Peifeng Qiu - Peter Billen - Peter Eisentraut - Peter Geoghegan - Peter Neave - Petr Fedorov - Petr Jelínek - Petr Slavov - Petru-Florin Mihancea - Phil Bayer - Phil Florent - Philip Dubé - Pierre Ducroquet - Piotr Gabriel Kosinski - Piotr Stefaniak - Piotr Wlodarczyk - Prabhat Sahu - Quentin Rameau - Rafael Castro - Rafia Sabih - Rahila Syed - Rajkumar Raghuwanshi - Rares Salcudean - Raúl Marín Rodríguez - Regina Obe - Renaud Navarro - Richard Guo - Rick Otten - Rikard Falkeborn - RK Korlapati - Robbie Harwood - Robert Haas - Robert Treat - Robert Vollmert - Roger Curley - Roman Zharkov - Ronan Dunklau - Rui Hai Jiang - Rushabh Lathia - Ryan Lambert - Ryo Matsumura - Ryohei Nagaura - Ryohei Takahashi - Samuel Williams - Sand Stone - Sanyo Capobiango - Satoru Koizumi - Sean Johnston - Serge Latyntsev - Sergei Kornilov - Sergey Pashkov - Sergio Conde Gómez - Shawn Debnath - Shay Rojansky - Sho Kato - Shohei Mochizuki - Shouyu Luo - Simon Riggs - Sivasubramanian Ramasubramanian - Slawomir Chodnicki - Stas Kelvish - Stefan Kadow - Stepan Yankevych - Stephen Amell - Stephen Frost - Steve Rogerson - Steve Singer - Steven Winfield - Surafel Temesgen - Suraj Kharage - Suresh Kumar R - Takayuki Tsunakawa - Takeshi Ideriha - Takuma Hoshiai - Tasos Maschalidis - Tatsuo Ishii - Tatsuro Yamada - Teodor Sigaev - Thom Brown - Thomas Munro - Thomas Poty - Tillmann Schulz - Tim Möhlmann - Timur Birsh - Tobias Bussmann - Tom Cassidy - Tom Dunstan - Tom Gottfried - Tom Lane - Tomas Vondra - Tushar Ahuja - Ulf Adams - Vaishnavi Prabakaran - Victor Petrovykh - Victor Wagner - Victor Yegorov - Vijaykumar Jain - Vik Fearing - Vlad Sterzhanov - Vladimir Baranoff - Vladimir Kriukov - Wu Fei - Yaroslav Schekin - Yi Huang - Yoshikazu Imai - Yugo Nagata - Yulian Khodorkovskiy - Yuming Wang - YunQiang Su - Yuri Kurenkov - Yusuke Egashira - Yuzuko Hosoya - Zhou Digoal - - - - diff --git a/postgresql/release-13.xml b/postgresql/release-13.xml new file mode 100644 index 000000000..8bb88243a --- /dev/null +++ b/postgresql/release-13.xml @@ -0,0 +1,3034 @@ + + + + + + Release 13 + + + Release date: + 2020-XX-XX, CURRENT AS OF 2020-05-03 + + + + Overview + + + Major enhancements in PostgreSQL 13 include: + + + + + + + + + + + + + + The above items are explained in more detail in the sections below. + + + + + + + Migration to Version 13 + + + A dump/restore using or use of or logical replication is required for those + wishing to migrate data from any previous release. See for general information on migrating to new major + releases. + + + + Version 13 contains a number of changes that may affect compatibility + with previous releases. Observe the following incompatibilities: + + + + + + + + + Change SIMILAR + TO ... ESCAPE NULL to return NULL + (Tom Lane) + + + + This new behavior matches the SQL specification. + Previously this caused the escape to be set to the default backslash + character. The previous behavior has been retained in old views + by keeping the original function unchanged. This also applies to + substring(text FROM pattern ESCAPE text). + + + + + + + + Have jsonb_to_tsvector() + properly check "string" parameter (Dominik Czarnota) + + + + + + + + In , when using adjacent asterisks with braces, + e.g. ".*{2}.*{3}", properly interpret that as ".*{5}" (Nikita Glukhov) + + + + + + + + Change the way non-default values affect concurrency + (Thomas Munro) + + + + Previously, this value was adjusted before effecting the number of + concurrent requests. This value is now used directly. Conversion of + old values to new ones can be done using: + + + + SELECT round(sum(OLD / n::float)) FROM generate_series(1, OLD) s(n); + + + + + + + + Prevent display of auxiliary processes in and + system views (Euler Taveira) + + + + Queries that join these views to and wish to see auxiliary processes + will need to use left joins. + + + + + + + + Fix 's bt_metap() + to return more appropriate data types that are less likely to overflow + (Peter Geoghegan) + + + + + + + + Rename some recovery-related wait + events (Fujii Masao) + + + + Rename RecoveryWalAll + to RecoveryWalStream + and RecoveryWalStream to + RecoveryRetrieveRetryInterval. + + + + + + + + Fix ALTER FOREIGN + TABLE ... RENAME COLUMN to return a more appropriate + command tag (Fujii Masao) + + + + Previously it returned ALTER TABLE, but now returns + ALTER FOREIGN TABLE. + + + + + + + + Fix ALTER + MATERIALIZED VIEW ... RENAME COLUMN to return a more + appropriate command tag (Fujii Masao) + + + + Previously it returned ALTER TABLE, but now returns + ALTER MATERIALIZED VIEW. + + + + + + + + Remove support for defining operator + classes using pre-PostgreSQL + 8.0 syntax (Daniel Gustafsson) + + + + + + + + Remove support for defining foreign key + constraints using pre-PostgreSQL + 7.3 syntax (Daniel Gustafsson) + + + + + + + + Remove support for "opaque" pseudo-types used by + pre-PostgreSQL 7.3 servers (Daniel + Gustafsson) + + + + + + + + + Changes + + + Below you will find a detailed account of the changes between + PostgreSQL 13 and the previous major + release. + + + + Server + + + <link linkend="ddl-partitioning">Partitioning</link> + + + + + + + + Improve cases where pruning of partitions can happen + (Yuzuko Hosoya, Amit Langote, Álvaro Herrera) + + + + + + + + Allow partitionwise + joins to happen in more cases (Ashutosh Bapat, Etsuro Fujita, + Amit Langote, Tom Lane) + + + + For example, partitionwise joins can now happen between partitioned + tables even when their partition bounds do not match exactly. + + + + + + + + Allow BEFORE row-level triggers on partitioned tables (Álvaro + Herrera) + + + + These triggers cannot change which partition is the destination. + + + + + + + + Allow partitioned tables to be logically replicated via publications (Amit Langote) + + + + Previously, partitions had to be replicated individually. Now + partitioned tables can be published explicitly causing all partitions + to be automatically published. Addition/removal of partitions from + partitioned tables are automatically added/removed from publications. + The option + publish_via_partition_root controls whether + changes to partitions are published as their own or their + ancestor's. + + + + + + + + Allow logical replication into partitioned tables on subscribers + (Amit Langote) + + + + Previously, subscribers could only receive rows into non-partitioned + tables. + + + + + + + + Allow ROW values + to be used as partitioning expressions (Amit Langote) + + + + + + + + + Indexes + + + + + + + + More efficiently store duplicates in btree indexes + (Anastasia Lubennikova, Peter Geoghegan) + + + + This allows efficient btree indexing of low cardinality columns + by storing duplicate keys only once. Users upgrading + with will need to use to make use of this feature. + + + + + + + + Allow and indexes for box/point distance lookups (Nikita + Glukhov) + + + + + + + + Allow indexes to more efficiently handle + NOT restrictions (Nikita Glukhov, Alexander + Korotkov, Tom Lane, Julien Rouhaud) + + + + + + + + Allow index operator classes + to take parameters (Nikita Glukhov) + + + + + + + + Allow CREATE INDEX to specify the GiST signature + length and maximum number of integer ranges (Nikita Glukhov) + + + + Indexes created on four and eight-byte integer + array, tsvector, + , , and columns can now control these GiST index parameters, + rather than using the defaults. + + + + + + + + Prevent indexes that use non-default collations from being added as a table's unique or primary + key constraint (Tom Lane) + + + + The index and column collations must now match so the index's + uniqueness matches the column's uniqueness. + + + + + + + + + + Optimizer + + + + + + + + Improve the optimizer's selectivity estimation for + containment/match operators (Tom Lane) + + + + + + + + Allow setting statistics target + for extended statistics + (Tomas Vondra) + + + + This is controlled with the new command option ALTER + STATISTICS ... SET STATISTICS. Previously this was computed + based on more general statistics target settings. + + + + + + + + Allow use of multiple extended statistics objects in a single query + (Tomas Vondra) + + + + + + + + Allow use of extended statistics objects for OR clauses and IN/ANY constant + lists (Pierre Ducroquet, Tomas Vondra) + + + + + + + + Allow functions in FROM clauses to be moved to their + reference sites if they evaluate to constants (Alexander Kuzmenkov, + Aleksandr Parfenov) + + + + + + + + + General Performance + + + + + + + + Implement incremental + sorting (James Coleman, Alexander Korotkov, Tomas Vondra) + + + + If a result is already sorted by several leading keys, this + allows for batch sorting of additional trailing keys because the + previous keys are already equal. This is controlled by . + + + + + + + + Improve the performance of sorting inet values (Brandur Leach) + + + + + + + + Allow hash aggregation + to use disk storage for large aggregation result sets (Jeff Davis) + + + + Previously, hash aggregation was avoided if it was expected to use + more than memory. This is controlled + by . + + + + + + + + Allow grouping sets to + use hash aggregation with disk storage for large grouping set results + (Jeff Davis) + + + + Previously, hash aggregation was avoided if it was expected to use + more than memory. This is controlled + by . + + + + + + + + Allow inserts to trigger activity + (Laurenz Albe, Darafei Praliaskouski) + + + + This new behavior reduces the work necessary when the table needs to + be frozen and allows pages to be set as all-visible. All-visible pages + allow index-only scans to access fewer heap rows. + + + + + + + + Add to control I/O + concurrency for maintenance operations (Thomas Munro) + + + + + + + + Allow skipping of WAL for full table writes if is minimal (Kyotaro + Horiguchi) + + + + Relations larger than + will have their files fsync'ed rather than generating + WAL. Previously this was done only for + COPY operations, but the implementation had a bug + that could cause data loss during crash recovery. + + + + + + + + Enable Unix-domain sockets + support on Windows (Peter Eisentraut) + + + + + + + + Improve the performance when replaying commands when many tablespaces are + in use (Fujii Masao) + + + + + + + + Improve performance for truncation + of very large relations (Kirk Jamison) + + + + + + + + Improve speed of decompression and + the retrieval of only the leading bytes of TOAST + values (Binguo Bao, Andrey Borodin) + + + + Previously, TOAST values were fully fetched and + only the requested leading bytes were decompressed and returned. + Now, only the requested bytes are fetched. + + + + + + + + Improve performance of /NOTIFY (Martijn van + Oosterhout) + + + + + + + + Improve the efficiency of removing duplicate events (Tom Lane) + + + + + + + + Use lookup tables to speed up integer to text conversion (David Fetter) + + + + + + + + Reduce memory usage for query strings that contain multiple + SQL statements (Amit Langote) + + + + + + + + + Monitoring + + + + + + + + Allow , + , , and to track WAL usage + statistics (Kirill Bychik, Julien Rouhaud) + + + + + + + + Allow a sample of statements to be logged (Adrien Nayrat) + + + + A ratio of statements + taking over duration + will be logged. + + + + + + + + Add the backend type to csvlog and optionally log output (Peter Eisentraut) + + + + + + + + Improve control of prepared statement parameter logging (Alexey + Bashtanov, Álvaro Herrera) + + + + The GUC setting controls the maximum length + of parameter values output during statement non-error logging, and + does the + same for error statement logging. Previously, prepared statement + parameters were not logged during errors. + + + + + + + + Make buffer counters 64-bits + wide to avoid overflow (Álvaro Herrera) + + + + + + + + Allow function call backtraces of errors to be logged (Peter + Eisentraut, Álvaro Herrera) + + + + Server variable specifies + which C functions should generate backtraces on error. + + + + + + + + Add min() and + max() aggregates for pg_lsn (Fabrízio + de Royes Mello) + + + + This is useful for monitoring queries. + + + + + + + + + System Views + + + + + + + + Add leader_pid to to report parallel worker ownership + (Julien Rouhaud) + + + + + + + + Add system view pg_stat_progress_basebackup + to report the progress of streaming base backups (Fujii Masao) + + + + + + + + Add system view pg_stat_progress_analyze + to report progress (Álvaro + Herrera, Tatsuro Yamada, Vinayak Pokale) + + + + + + + + Add columns to the pg_stat_replication + system view to report how much logical decoding information has been + spilled to disk (Tomas Vondra) + + + + + + + + Add system view pg_shmem_allocations + to display shared memory usage (Andres Freund, Robert Haas) + + + + + + + + Create pg_stat_slru + system view to monitor internal SLRU caches + (Tomas Vondra) + + + + + + + + Allow to be set up + to 1MB (Vyacheslav Makarov) + + + + The previous maximum was 100kB. + + + + + + + + + <link linkend="wait-event-table">Wait Events</link> + + + + + + + + Add wait event for posix_fallocate() (Thomas + Munro) + + + + + + + + Add wait event VacuumDelay to report on cost-based vacuum delay + (Justin Pryzby) + + + + + + + + Add wait events for WAL archive and recovery pause + (Fujii Masao) + + + + The new events are BackupWaitWalArchive and RecoveryPause. + + + + + + + + Add wait events RecoveryConflictSnapshot and + RecoveryConflictTablespace to monitor recovery conflicts (Masahiko + Sawada) + + + + + + + + Improve performance of wait events on BSD-based + systems (Thomas Munro) + + + + + + + + + <acronym>Authentication</acronym> + + + + + + + + Only allow superusers to view the setting (Insung Moon) + + + + This was changed as a security precaution. + + + + + + + + Change the default minimum TLS version from 1.0 + to 1.2 (Peter Eisentraut) + + + + This is controlled by . + + + + + + + + + Server Configuration + + + + + + + + Tighten rules on which utility commands are possible in mode (Robert Haas) + + + + This also increases the number of utility commands that can run in + parallel queries. + + + + + + + + Allow to be changed + after server start (Peter Eisentraut) + + + + + + + + Disallow non-superusers from modifying system tables when is set (Peter Eisentraut) + + + + Previously, if + was set at server start, non-superusers could issue + INSERT/UPDATE/DELETE + commands on system tables. + + + + + + + + + + + Streaming Replication and Recovery + + + + + + + + Allow streaming replication configuration settings to be changed by + reload (Sergei Kornilov) + + + + Previously, a server restart was required to change + and . + + + + + + + + Allow WAL receivers use a temporary replication slot + if a permanent one is not specified (Peter Eisentraut, Sergei Kornilov) + + + + This behavior can be enabled using . + + + + + + + + Allow replication slot storage to be limited by (Kyotaro Horiguchi) + + + + Replication slots that exceed this value are invalidated. + + + + + + + + Allow standby promotion + to cancel any requested pause (Fujii Masao) + + + + Previously, promotion could not happen while the standby was in + paused state. + + + + + + + + Generate an error if recovery does not reach the specified recovery target + (Leif Gunnar Erlandsen, Peter Eisentraut) + + + + Previously, the end of the WAL would promote the + standby, even if the target was not reached. + + + + + + + + Allow control over how much memory is used by logical decoding before + it is spilled to disk (Tomas Vondra, Dilip Kumar, Amit Kapila) + + + + This is controlled by . + + + + + + + + Allow WAL recovery to continue even if invalid + pages are referenced (Fujii Masao) + + + + This is enabled using . + + + + + + + + + Utility Commands + + + + + + + + Allow to process indexes in parallel + (Masahiko Sawada, Amit Kapila) + + + + The new PARALLEL option controls this. + + + + + + + + Allow FETCH FIRST + to use WITH TIES to return any additional rows + that match the last result row (Surafel Temesgen) + + + + + + + + Report planning-time buffer usage in 's + BUFFER output (Julien Rouhaud) + + + + + + + + Have CREATE TABLE + LIKE propagate CHECK's NO + INHERIT property to created tables (Ildar Musin, Chris + Travers) + + + + + + + + When using LOCK + TABLE on a partitioned table, do not check permissions + on the child tables (Amit Langote) + + + + + + + + Allow OVERRIDING USER + VALUE on inserts into identity columns (Dean Rasheed) + + + + + + + + Add clause DROP + EXPRESSION to remove generated properties from columns + (Peter Eisentraut) + + + + + + + + Fix bugs in ALTER TABLE when later clauses overlap + changes made by earlier clauses in the same command (Tom Lane) + + + + + + + + Add syntax to rename view columns + (Fujii Masao) + + + + This was previously possible only using ALTER TABLE RENAME + COLUMN. + + + + + + + + Add options useful for extensions, + like TOAST and I/O functions control (Tomas + Vondra, Tom Lane) + + + + + + + + Add LOCALE + option (Peter Eisentraut) + + + + This combines existing options LC_COLLATE and + LC_CTYPE into a single option. + + + + + + + + Allow to disconnect users so + drop succeeds (Pavel Stehule, Amit Kapila) + + + + This is enabled by WITH FORCE. + + + + + + + + Add C structure member tg_updatedcols + to record updated columns to C triggers (Peter Eisentraut) + + + + + + + + Add FOREIGN to ALTER statements, + if appropriate (Luis Carril) + + + + WHAT IS THIS ABOUT? + + + + + + + + + Data Types + + + + + + + + Add polymorphic data types for use by functions requiring compatible + arguments (Pavel Stehule) + + + + The new data types are anycompatible, + anycompatiblearray, anycompatiblenonarray, and anycompatiblerange. + + + + + + + + Add SQL data type xid8 to expose FullTransactionId + (Thomas Munro) + + + + The xid data type is only four bytes so does not show the transaction + epoch. + + + + + + + + Add data type regcollation and + helper functions for system collations (Julien Rouhaud) + + + + + + + + Use the glibc version in some cases as the collation version (Thomas Munro) + + + + If the glibc version changes, a warning will be issued when a + mismatching collation is used. + + + + + + + + Add support for collation versions on Windows (Thomas Munro) + + + + + + + + Allow ROW values + values to have their members extracted with suffix notation (Tom Lane) + + + + For example, (ROW(4, 5.0)).f1 returns 4. + + + + + + + + + Functions + + + + + + + + Add alternate version of jsonb_setI() + with special NULL handling (Andrew Dunstan) + + + + The new function, jsonb_set_lax(), allows null + new values to either set the specified key to JSON + null, delete the key, raise exception, or ignore the operation. + IS 'return_target' CLEAR? + + + + + + + + Add jsonpath .datetime() + method (Nikita Glukhov, Teodor Sigaev, Oleg Bartunov, Alexander + Korotkov) + + + + This allows json values to be converted to timestamps, which can + then be processed in jsonpath expressions. This also adds jsonpath + functions that support time zone-aware output. + + + + + + + + Add SQL functions NORMALIZE() + to normalize Unicode strings, and IS + NORMALIZED to check for normalization (Peter + Eisentraut) + + + + + + + + Allow Unicode + escapes, e.g., E'\u####', U&'\####', to specify any + character available in the database encoding, even when the database + encoding is not UTF-8 (Tom Lane) + + + + The Unicode characters must be available in the database encoding. + + + + + + + + Allow to_date() + and to_timestamp() to recognize non-English + month/day names (Juan José Santamaría Flecha, Tom Lane) + + + + The names recognized are the same as those output by to_char() + with the same format codes. + + + + + + + + Add format specifications FF1-FF6 to control display of 1-6 subsecond + digits (Alexander Korotkov, Nikita Glukhov, Teodor Sigaev, Oleg + Bartunov) + + + + These patterns can be used by to_char(), + to_timestamp(), and jsonpath's + .datetime(). + + + + + + + + Add SSSSS time format specification as an + SQL standard alias for SSSS + (Nikita Glukhov, Alexander Korotkov) + + + + + + + + Add function gen_random_uuid() + to generate version 4 UUIDs (Peter Eisentraut) + + + + Previously UUID generation functions were only + available via external modules and . + + + + + + + + Add greatest-common-denominator (gcd) and + least-common-multiple (lcm) functions (Vik Fearing) + + + + + + + + Improve the performance and accuracy of square root and natural log + (ln) output (Dean Rasheed) + + + + + + + + Add function min_scale() + that returns the number of digits to the right the decimal point + that is required to represent the numeric value with full precision + (Pavel Stehule) + + + + + + + + Add function trim_scale() + to reduce the scale of a number by removing trailing zeros (Pavel + Stehule) + + + + + + + + Add commutators of distance + operators (Nikita Glukhov) + + + + For example, previously only point <-> line was supported, + now line <-> point works too. + + + + + + + + Create xid8 versions of all transaction id functions + (Thomas Munro) + + + + The old function names were kept for backward compatibility. DO WE + HAVE NEW NAMES? + + + + + + + + Allow get_bit() + and set_bit() to set bits beyond 256MB of bytea + data (Movead Li) + + + + + + + + Allow advisory-lock + functions to be used in some parallel operations (Tom Lane) + + + + + + + + Add the ability to remove an object's dependency on an extension + (Álvaro Herrera) + + + + The object can be a function, materialized view, index, or trigger. + The syntax is ALTER .. NO DEPENDS ON. + + + + + + + + + + <xref linkend="plpgsql"/> + + + + + + + + Improve performance of simple PL/pgSQL expressions (Tom Lane, + Amit Langote) + + + + + + + + Improve the performance of PL/pgSQL functions that use immutable + expressions (Konstantin Knizhnik) + + + + + + + + + Client Interfaces + + + + + + + + Allow libpq clients to require channel binding (Jeff Davis) + + + + Using the libpq connection parameter channel_binding + forces the other end of the TLS connection to prove + it knows the user's password. This prevents man-in-the-middle attacks. + + + + + + + + Add libpq connection parameters to control the min/max + TLS version (Daniel Gustafsson) + + + + The settings are and . + + + + + + + + Tighten line length and comment detection in .pgpass files (Fujii Masao) + + + + + + + + Allow specification of passwords to unlock client certificates (Craig + Ringer, Andrew Dunstan) + + + + This is specified by the + connection option. + + + + + + + + Allow DER-encoded client certificates (Craig Ringer, + Andrew Dunstan) + + + + + + + + + Client Applications + + + <xref linkend="app-psql"/> + + + + + + + + Add the transaction status (%x) to the default psql + prompts (Vik Fearing) + + + + + + + + Allow the secondary psql prompt to be same + number of spaces as the primary prompt (Thomas Munro) + + + + This is accomplished by setting PROMPT2 to %w. + + + + + + + + Allow \g and \gx to + change any \pset output + options for a single command (Tom Lane) + + + + This allows syntax like \g (expand=on), which is equivalent to \gx. + + + + + + + + Add psql commands to report operator + classes and operator families (Sergey Cherkashin, Nikita Glukhov, + Alexander Korotkov) + + + + The new commands are \dAc, \dAf, \dAo, and \dAp. + + + + + + + + Show table persistence in psql's \dt+ and related commands + (David Fetter) + + + + In verbose mode, the table/index/view shows if the object is permanent, + temporary, or unlogged. + + + + + + + + Improve output of psql \d for TOAST + tables (Justin Pryzby) + + + + + + + + Adjust display of psql's \e query (Tom Lane) + + + + When exiting the editor, if the query doesn't end with a semicolon + or \g, the query buffer contents will now be displayed. + + + + + + + + Add \warn command to + psql (David Fetter) + + + + This is like \echo except that the text is sent to stderr instead + of stdout. + + + + + + + + Add the PostgreSQL home page to command-line + output (Peter Eisentraut) + + + + + + + + + <link linkend="pgbench"><application>pgbench</application></link> + + + + + + + + Allow pgbench to partition its 'accounts' table (Fabien Coelho) + + + + This allows performance testing of partitioning. + + + + + + + + Add pgbench command \aset, which behaves like \gset, but for multiple + queries (Fabien Coelho) + + + + + + + + Allow pgbench to generate its data server-side, rather than client side + (Fabien Coelho) + + + + + + + + Allow pgbench to dump script contents using + (Fabien Coelho) + + + + + + + + + + + Server Applications + + + + + + + + Generate backup manifests for base backups, and verify them (Robert + Haas) + + + + A new tool can verify backups. + + + + + + + + Have estimate the + total backup size by default (Fujii Masao) + + + + This computation allows pg_stat_progress_analyze + to show progress, and can be disabled by using the + option. Previously, this + computation happened only if was used. + + + + + + + + Add + option to configure standbys (Paul Guo, Jimmy Yih, Ashwin Agrawal) + + + + This matches 's + option. + + + + + + + + Allow pg_rewind to use the target + cluster's to retrieve needed + WAL (Alexey Kondratov) + + + + This is enabled using the + / option. + + + + + + + + Have pg_rewind automatically run crash + recovery before rewinding (Paul Guo, Jimmy Yih, Ashwin Agrawal) + + + + This can be disabled by using . + + + + + + + + Increase information + reported by pg_waldump (Fujii Masao) + + + + + + + + Add + option to suppress non-error output + (Andres Freund, Robert Haas) + + + + + + + + Allow + to dump data from foreign + servers (Luis Carril) + + + + + + + + Allow vacuum commands run by to operate in parallel mode + (Masahiko Sawada) + + + + This is enabled with the new option. + + + + + + + + Allow + to operate in parallel (Julien Rouhaud) + + + + Parallel mode is enabled with the new option. + + + + + + + + Allow + to force disconnections so the drop succeeds (Pavel Stehule) + + + + This is enabled with the option. + + + + + + + + Remove and + from (Alexander + Lakhin) + + + + The long-supported options for this are called + and . + + + + + + + + Use the directory of the binary + as the default new 'bindir' location when running + pg_upgrade (Daniel Gustafsson) + + + + + + + + + Documentation + + + + + + + + Add a glossary to the documentation + (Corey Huinker, Jürgen Purtz, Roger Harkavy, Álvaro + Herrera) + + + + + + + + Reformat tables containing function + information for better clarity (Tom Lane) + + + + + + + + Upgrade to use DocBook 4.5 + (Peter Eisentraut) + + + + + + + + + Source Code + + + + + + + + Add support for building on Visual Studio 2019 (Haribabu Kommi) + + + + + + + + Add build support for MSYS2 (Peter Eisentraut) + + + + + + + + Add compare_exchange and fetch_add assembly language code for Power + PC compilers (Noah Misch) + + + + + + + + Update Snowball + stemmer dictionaries used by full text search (Panagiotis + Mavrogiorgos) + + + + This adds Greek stemming and improves Danish and French stemming. + + + + + + + + Remove support for Windows 2000 (Michael Paquier) + + + + + + + + Remove support for non-ELF BSD + systems (Peter Eisentraut) + + + + + + + + Remove support for Python versions + 2.5.X and earlier (Peter Eisentraut) + + + + + + + + Remove support for OpenSSL 0.9.8 + and 1.0.0 (Michael Paquier) + + + + + + + + Remove support option + 8-byval (Peter Eisentraut) + + + + This was needed for previously supported version-zero functions. + + + + + + + + Remove configure option + (Peter Eisentraut) + + + + This was needed for previously supported version-zero functions. + + + + + + + + Add the query string to planner hook functions (Pascal Legrand, + Julien Rouhaud) + + + + + + + + Add command hook (Yuli Khodorkovskiy) + + + + + + + + Add TLS init hook (Andrew Dunstan) + + + + + + + + Allow building with no predefined Unix-domain socket directory + (Peter Eisentraut) + + + + + + + + Reduce the probability of SysV resource key collision on Unix platforms + (Tom Lane) + + + + + + + + Use operating system functions to cleanly erase memory that contains + sensitive information (Peter Eisentraut) + + + + For example, this is used for clearing passwords stored in memory. + + + + + + + + Add "headerscheck" script to test C header-file compatibility + (Tom Lane) + + + + + + + + Implement internal lists as arrays, rather than a chain of structures + (Tom Lane) + + + + This improves performance for queries that access many object. + The internal List API has also been improved. + + + + + + + + Update Windows build scripts + to use the modern flag for + UUID libraries (Kyotaro Horiguchi) + + + + + + + + + Additional Modules + + + + + + + + Allow extensions to be + specified as trusted (Tom Lane) + + + + Such extensions can be installed in a database by users with creation + rights, even if they are not superusers. This change also removes + the pg_pltemplate system catalog. + + + + + + + + Remove support for upgrading "unpackaged" extensions (Tom Lane) + + + + + + + + Allow non-superusers to connect to + foreign servers without using a password (Craig Ringer) + + + + Specifically, allow to set + password_required to false. Care must still be + taken to avoid non-superusers from using superuser credentials to + connect to the foreign server. + + + + + + + + Allow postgres_fdw to use certificate + authentication (Craig Ringer) + + + + Different users can use different certificates. + + + + + + + + Allow to control access to the + TRUNCATE command (Yuli Khodorkovskiy) + + + + + + + + Add extension bool_plperl which transforms + SQL booleans to/from PL/Perl booleans (Ivan + Panchenko) WHERE IS THIS DOCUMENTED? + + + + + + + + Have treat SELECT + ... FOR UPDATE as distinct from those without FOR + UPDATE (Andrew Gierth, Vik Fearing) + + + + + + + + Allow pg_stat_statements to optionally + track the planning time of statements (Julien Rouhaud, Pascal Legrand, + Thomas Munro, Fujii Masao) + + + + Previously only execution time was tracked. + + + + + + + + Overhaul 's lquery syntax to treat + NOT (!) more logically (Filip Rembialkowski, + Tom Lane, Nikita Glukhov) + + + + Also allow non-* queries to use a numeric range ({}) of matches. + + + + + + + + Add support for binary I/O of , lquery, and + ltxtquery types (Nino Floris) + + + + + + + + Add option to extension to ignore the sign + of integers (Jeff Janes) + + + + + + + + Add function + pg_file_sync() to allow fsync'ing a file + (Fujii Masao) + + + + + + + + Add functions to output + t_infomask/t_infomask2 + values in human-readable format (Craig Ringer, Sawada Masahiko, + Michael Paquier) + + + + + + + + Add btree index deduplication processing columns to pageinspect output + (Peter Geoghegan) + + + + + + + + + + + Acknowledgments + + + The following individuals (in alphabetical order) have contributed to this + release as patch authors, committers, reviewers, testers, or reporters of + issues. + + + + + + + + diff --git a/postgresql/release.xml b/postgresql/release.xml index a8a6eeae9..e9b9e0f62 100644 --- a/postgresql/release.xml +++ b/postgresql/release.xml @@ -11,15 +11,14 @@ Typical markup: &<> use & escapes PostgreSQL postgresql.conf, pg_hba.conf -[A-Z][A-Z_ ]+[A-Z_] , , , -[A-Za-z_][A-Za-z0-9_]+() +\<[A-Z][A-Z_ ]+[A-Z_]\> , , , +\<[A-Za-z_][A-Za-z0-9_]+() \-\-?[A-Za-z_]+[-A-Za-z_]*
@@ -388,7 +391,7 @@ U&"d!0061t!+000061" UESCAPE '!' \xh, \xhh - (h = 0 - 9, A - F) + (h = 0–9, A–F) valeur hexadécimale
@@ -396,7 +399,7 @@ U&"d!0061t!+000061" UESCAPE '!' \uxxxx, \Uxxxxxxxx - (x = 0 - 9, A - F) + (x = 0–9, A–F) caractère Unicode hexadécimal sur 16 ou 32 bits @@ -416,25 +419,10 @@ U&"d!0061t!+000061" UESCAPE '!' Il est de votre responsabilité que les séquences d'octets que vous créez, tout spécialement lorsque vous utilisez les échappements octaux et hexadécimaux, soient des caractères valides dans l'encodage du jeu de - caractères du serveur. Quand l'encodage est UTF-8, alors les échappements + caractères du serveur. Une alternative utile est d'utiliser les échappements Unicode ou l'autre syntaxe d'échappement Unicode, expliqués dans la , devraient être utilisés. - (L'alternative serait de réaliser l'encodage UTF-8 manuellement et d'écrire - les octets, ce qui serait très lourd.) - - - - La syntaxe d'échappement Unicode fonctionne complètement, mais seulement - quand l'encodage du serveur est justement UTF8. Lorsque - d'autres encodages serveur sont utilisés, seuls les points de code dans - l'échelle ASCII (jusqu'à \u007F) peuvent être utilisés. - La forme sur quatre chiffres et la forme sur six chiffres peuvent être - utilisées pour indiquer des paires UTF-16 composant ainsi des caractères - comprenant des points de code plus grands que U+FFFF, et ce bien que la - disponibilité de la forme sur six chiffres ne le nécessite pas - techniquement. (Quand des paires de substitution sont utilisées et que - l'encodage du serveur est UTF8, elles sont tout d'abord - combinées en un point code seul qui est ensuite encodé en UTF-8.) + linkend="sql-syntax-strings-uescape"/>; then the server + will check that the character conversion is possible @@ -518,17 +506,23 @@ U&'d!0061t!+000061' UESCAPE '!' - La syntaxe d'échappement Unicode fonctionne seulement quand l'encodage du - serveur est UTF8. Quand d'autres encodages de serveur - sont utilisés, seuls les codes dans l'échelle ASCII (jusqu'à - \007F) peuvent être utilisés. - La forme sur quatre chiffres et la forme sur six chiffres peuvent être - utilisées pour indiquer des paires de substitution UTF-16, composant ainsi - des caractères comprenant des points de code plus grands que U+FFFF (et - ce, bien que la disponibilité de la forme sur six chiffres ne le nécessite - pas techniquement). (Quand des paires de substitution sont utilisées avec - un encodage serveur UTF8, elles sont tout d'abord - combinées en un seul point de code, qui est ensuite encodé en UTF-8.) + To include the escape character in the string literally, write + it twice. + + + + Either the 4-digit or the 6-digit escape form can be used to + specify UTF-16 surrogate pairs to compose characters with code + points larger than U+FFFF, although the availability of the + 6-digit form technically makes this unnecessary. (Surrogate + pairs are not stored directly, but are combined into a single + code point.) + + + + If the server encoding is not UTF-8, the Unicode code point identified + by one of these escape sequences is converted to the actual server + encoding; an error is reported if that's not possible. @@ -540,11 +534,6 @@ U&'d!0061t!+000061' UESCAPE '!' des problèmes de sécurité similaires. Si le paramètre est désactivé, cette syntaxe sera rejetée avec un message d'erreur. - - - Pour inclure le caractère d'échappement littéralement dans la chaîne, - écrivez-le deux fois. - @@ -994,7 +983,7 @@ CAST ( 'chaîne' AS type ) - + Opérateur/Élément @@ -2276,10 +2265,9 @@ SELECT ARRAY[]::integer[]; mot-clé ARRAY suivi par une sous-requête entre parenthèses (et non pas des crochets). Par exemple : SELECT ARRAY(SELECT oid FROM pg_proc WHERE proname LIKE 'bytea%'); - array ------------------------------------------------------------------------ - {2011,1954,1948,1952,1951,1244,1950,2005,1949,1953,2006,31,2412,2413} -(1 row) + array +------------------------------------------------------------------ + {2011,1954,1948,1952,1951,1244,1950,2005,1949,1953,2006,31,2412} SELECT ARRAY(SELECT ARRAY[i, i*2] FROM generate_series(1,5) AS a(i)); array diff --git a/postgresql/tablefunc.xml b/postgresql/tablefunc.xml index 2f7160537..30d6783fd 100644 --- a/postgresql/tablefunc.xml +++ b/postgresql/tablefunc.xml @@ -18,89 +18,109 @@ des fonctions C qui renvoient plusieurs lignes. + + This module is considered trusted, that is, it can be + installed by non-superusers who have CREATE privilege + on the current database. + + Fonctions - montre les fonctions fournies par le + résume les fonctions fournies par le module tablefunc. Fonctions <filename>tablefunc</filename> - - - - Fonction - Retour - Description - - - - - normal_rand(int numvals, float8 mean, float8 stddev) - setof float8 - - Renvoie un ensemble de valeurs float8 normalement distribuées - - - - crosstab(text sql) - setof record - - Renvoie une table pivot contenant les noms des lignes - ainsi que N colonnes de valeur, où - N est déterminé par le type de ligne - spécifié par la requête appelant - - - - crosstabN(text sql) - setof table_crosstab_N - - Produit une table pivot contenant les noms des lignes - ainsi que N colonnes de valeurs. - crosstab2, crosstab3 et - crosstab4 sont prédéfinies mais vous pouvez créer - des fonctions crosstabN - supplémentaires de la façon décrite ci-dessous - - - - crosstab(text source_sql, text category_sql) - setof record - - Produit une table pivot avec les colonnes des valeurs - spécifiées par une autre requête - - - - crosstab(text sql, int N) - setof record - - Version obsolète de crosstab(text). - Le paramètre N est ignoré car le nombre - de colonnes de valeurs est toujours déterminé par la requête - appelante + + + + + Function + + + Description + + + + + + + + normal_rand ( numvals integer, mean float8, stddev float8 ) + setof float8 + + + Produces a set of normally distributed random values. + + + + + + crosstab ( sql text ) + setof record + + + Produces a pivot table containing + row names plus N value columns, where + N is determined by the row type specified + in the calling query. + + + + + + crosstabN ( sql text ) + setof table_crosstab_N - - - - - - connectby(text relname, text keyid_fld, text parent_keyid_fld - [, text orderby_fld ], text start_with, int max_depth - [, text branch_delim ]) - - connectby - - setof record - - Produit une représentation d'une structure hiérarchique en arbre - - - - + + Produces a pivot table containing + row names plus N value columns. + crosstab2, crosstab3, and + crosstab4 are predefined, but you can create additional + crosstabN functions as described below. + + + + + + crosstab ( source_sql text, category_sql text ) + setof record + + + Produces a pivot table + with the value columns specified by a second query. + + + + + + crosstab ( sql text, N integer ) + setof record + + + Obsolete version of crosstab(text). + The parameter N is now ignored, since the + number of value columns is always determined by the calling query. + + + + + + connectby + connectby ( relname text, keyid_fld text, parent_keyid_fld text + , orderby_fld text , start_with text, max_depth integer + , branch_delim text ) + setof record + + + Produces a representation of a hierarchical tree structure. + + + +
diff --git a/postgresql/tcn.xml b/postgresql/tcn.xml index 8ae14b7e6..e6dbf7adb 100644 --- a/postgresql/tcn.xml +++ b/postgresql/tcn.xml @@ -17,6 +17,12 @@ AFTER et FOR EACH ROW. + + This module is considered trusted, that is, it can be + installed by non-superusers who have CREATE privilege + on the current database. + + Un seul paramètre peut être fourni à la fonction dans une instruction CREATE TRIGGER et il est optionnel. S'il est diff --git a/postgresql/textsearch.xml b/postgresql/textsearch.xml index 81dfe73a4..8ad5c56af 100644 --- a/postgresql/textsearch.xml +++ b/postgresql/textsearch.xml @@ -969,8 +969,7 @@ SELECT plainto_tsquery('english', 'The Fat & Rats:C'); 'fat' & 'rat' & 'c' - Ici, tous les symboles de ponctuation ont été annulés, car ce sont des - symboles espace. + Ici, tous les symboles de ponctuation ont été annulés. @@ -1029,7 +1028,7 @@ websearch_to_tsquery( configplainto_tsquery et phraseto_tsquery, elle reconnaît aussi certains - opérateurs. De plus, cette fonction ne doit jamais lever d'erreurs de + opérateurs. De plus, cette fonction ne lèvera jamais d'erreurs de syntaxe, ce qui permet de l'utiliser pour la recherche à partir d'entrées brutes fournies par un utilisateur. La syntaxe suivante est supportée : @@ -1052,18 +1051,26 @@ websearch_to_tsquery( config - OR : un OU logique sera converti vers + OR : the word or sera converti vers l'opérateur |. - - : l'opérateur logique NON sera converti vers + - : un tiret sera converti vers l'opérateur !. + + Other punctuation is ignored. So + like plainto_tsquery + and phraseto_tsquery, + the websearch_to_tsquery function will not + recognize tsquery operators, weight labels, or prefix-match + labels in its input. + Exemples : @@ -1793,10 +1800,15 @@ SELECT numnode('foo & bar'::tsquery); exemple : +SELECT querytree(to_tsquery('defined')); + querytree +----------- + 'defin' + SELECT querytree(to_tsquery('!defined')); querytree ----------- - + T @@ -1972,8 +1984,8 @@ SELECT ts_rewrite('a & b'::tsquery, - tsvector_update_trigger(tsvector_column_name, config_name, text_column_name , ... ) - tsvector_update_trigger_column(tsvector_column_name, config_column_name, text_column_name , ... ) +tsvector_update_trigger(tsvector_column_name,&zwsp; config_name, text_column_name , ... ) +tsvector_update_trigger_column(tsvector_column_name,&zwsp; config_column_name, text_column_name , ... ) @@ -2163,6 +2175,9 @@ LIMIT 10; Types de jeton de l'analyseur par défaut + + + Alias @@ -2369,7 +2384,7 @@ SELECT alias, description, token FROM ts_debug('http://example.com/stuff/index.h - Linguistique - les dictionnaires ispell tentent de réduire les mots en + Linguistique — les dictionnaires ispell tentent de réduire les mots en entrée en une forme normalisée ; les dictionnaires stemmer suppriment la fin des mots @@ -3784,7 +3799,7 @@ SELECT plainto_tsquery('supernovae stars'); recherche plein texte - CREATE INDEX name ON table USING gist(colonne); + CREATE INDEX name ON table USING GIST (column [ { DEFAULT | tsvector_ops } (siglen = number) ] ); @@ -3792,6 +3807,8 @@ SELECT plainto_tsquery('supernovae stars'); Crée un index GiST (Generalized Search Tree). La colonne peut être de type tsvector ou tsquery. + Optional integer parameter siglen determines + signature length in bytes (see below for details). @@ -3816,13 +3833,19 @@ SELECT plainto_tsquery('supernovae stars'); ligne de la table pour les éliminer. PostgreSQL le fait automatiquement si nécessaire. Les index GiST sont à perte, car chaque document est représenté dans l'index - par une signature à longueur fixe. La signature est générée par le hachage de + par une signature à longueur fixe. The signature length in bytes is determined + by the value of the optional integer parameter siglen. + The default signature length (when siglen is not specified) is + 124 bytes, the maximum signature length is 2024 bytes. + La signature est générée par le hachage de chaque mot en un bit aléatoire dans une chaîne à n bits, tous ces bits étant assemblés dans une opération OR qui produit une signature du document sur n bits. Quand deux hachages de mots sont identiques, nous avons un faux positif. Si tous les mots de la requête ont une correspondance (vraie ou fausse), alors la ligne de la table doit être récupérée pour voir si la - correspondance est correcte. + correspondance est correcte. Longer signatures lead to a more + precise search (scanning a smaller fraction of the index and fewer heap + pages), at the cost of a larger index. @@ -3973,6 +3996,7 @@ Parser: "pg_catalog.default" pg_catalog | finnish_stem | snowball stemmer for finnish language pg_catalog | french_stem | snowball stemmer for french language pg_catalog | german_stem | snowball stemmer for german language + pg_catalog | greek_stem | snowball stemmer for greek language pg_catalog | hungarian_stem | snowball stemmer for hungarian language pg_catalog | indonesian_stem | snowball stemmer for indonesian language pg_catalog | irish_stem | snowball stemmer for irish language diff --git a/postgresql/trigger.xml b/postgresql/trigger.xml index f40a909f4..0d0c6f8b4 100644 --- a/postgresql/trigger.xml +++ b/postgresql/trigger.xml @@ -121,8 +121,7 @@ de la requête (mais avant les triggers AFTER au niveau requête). Ces types de triggers peuvent seulement être définis sur les tables et sur les tables distantes, et non pas sur les vues. Les triggers - de niveau ligne BEFORE ne peuvent pas être définis sur - des tables partitionnées. Les triggers INSTEAD OF + INSTEAD OF peuvent seulement être définis sur des vues, et seulement au niveau ligne. Ils se déclenchent immédiatement pour chaque ligne de la vue identifiée comme nécessitant une action. @@ -532,6 +531,7 @@ TupleTableSlot *tg_newslot; Tuplestorestate *tg_oldtable; Tuplestorestate *tg_newtable; + const Bitmapset *tg_updatedcols; } TriggerData; @@ -641,6 +641,31 @@ + + + tg_updatedcols + + + For UPDATE triggers, a bitmap set indicating the + columns that were updated by the triggering command. Generic trigger + functions can use this to optimize actions by not having to deal with + columns that were not changed. + + + + As an example, to determine whether a column with attribute number + attnum (1-based) is a member of this bitmap set, + call bms_is_member(attnum - + FirstLowInvalidHeapAttributeNumber, + trigdata->tg_updatedcols)). + + + + For triggers other than UPDATE triggers, this will + be NULL. + + + diff --git a/postgresql/tsm-system-rows.xml b/postgresql/tsm-system-rows.xml index 85d0bfa35..749a93d5e 100644 --- a/postgresql/tsm-system-rows.xml +++ b/postgresql/tsm-system-rows.xml @@ -35,6 +35,12 @@ REPEATABLE. + + This module is considered trusted, that is, it can be + installed by non-superusers who have CREATE privilege + on the current database. + + Exemples diff --git a/postgresql/tsm-system-time.xml b/postgresql/tsm-system-time.xml index 62694bc08..ef8eb62a2 100644 --- a/postgresql/tsm-system-time.xml +++ b/postgresql/tsm-system-time.xml @@ -38,6 +38,12 @@ REPEATABLE. + + This module is considered trusted, that is, it can be + installed by non-superusers who have CREATE privilege + on the current database. + + Exemples diff --git a/postgresql/unaccent.xml b/postgresql/unaccent.xml index 1dfc1fa2e..f8dcd28f7 100644 --- a/postgresql/unaccent.xml +++ b/postgresql/unaccent.xml @@ -21,6 +21,12 @@ thesaurus. + + This module is considered trusted, that is, it can be + installed by non-superusers who have CREATE privilege + on the current database. + + Configuration diff --git a/postgresql/user-manag.xml b/postgresql/user-manag.xml index bd7ca0540..ae882b6c1 100644 --- a/postgresql/user-manag.xml +++ b/postgresql/user-manag.xml @@ -503,6 +503,8 @@ DROP ROLE role_a_supprimer;
Rôles par défaut + + Rôle diff --git a/postgresql/uuid-ossp.xml b/postgresql/uuid-ossp.xml index c97814bce..1428ae71a 100644 --- a/postgresql/uuid-ossp.xml +++ b/postgresql/uuid-ossp.xml @@ -15,6 +15,15 @@ Le module uuid-ossp fournit des fonctions qui permettent de créer des identifiants uniques universels (UUIDs) à l'aide d'algorithmes standard. Ce module fournit aussi des fonctions pour produire certaines constantes UUID spéciales. + This module is only necessary for special requirements beyond what is + available in core PostgreSQL. See for built-in ways to generate UUIDs. + + + + This module is considered trusted, that is, it can be + installed by non-superusers who have CREATE privilege + on the current database. @@ -33,38 +42,52 @@
Fonctions pour la génération d'UUID - - - - Fonction - Description - - - - - uuid_generate_v1()uuid_generate_v1 - + + + + + Fonction + + + Description + + + + + + + + uuid_generate_v1 + uuid_generate_v1 () + uuid + Cette fonction crée un UUID version 1. Ceci implique l'adresse MAC de l'ordinateur et un horodatage. Les UUID de ce type révèlent l'identité de l'ordinateur qui a créé l'identifiant et l'heure de création de cet identifiant, ce qui peut ne pas convenir pour certaines applications sensibles à la sécurité. + + + + + + uuid_generate_v1mc + uuid_generate_v1mc () + uuid - - - - uuid_generate_v1mc()uuid_generate_v1mc - Cette fonction crée un UUID version 1, mais utilise une adresse MAC multicast à la place de la vraie adresse de l'ordinateur. + + + + + + uuid_generate_v3 + uuid_generate_v3 ( namespace uuid, name text ) + uuid - - - - uuid_generate_v3(namespace uuid, name text)uuid_generate_v3 - Cette fonction crée un UUID version 3 dans l'espace de nom donné en utilisant le nom indiqué en entrée. L'espace de nom doit être @@ -86,6 +109,13 @@ pas être récupérée à partir de l'UUID généré. La génération des UUID par cette méthode ne comprend aucun élément au hasard ou dépendant de l'environnement et est du coup reproductible. + + + + + + uuid_generate_v4 () + uuid @@ -95,73 +125,95 @@ Cette fonction crée un UUID version 4 qui est entièrement réalisé à partir de nombres aléatoires. + + + + + + uuid_generate_v5 ( namespace uuid, name text ) + uuid - - - - uuid_generate_v5(namespace uuid, name text) - Cette fonction crée un UUID version 5 qui fonctionne comme un UUID version 3 sauf que SHA-1 est utilisé comme méthode de hachage. La version 5 devrait être préférée à la version 3 car SHA-1 est considéré plus sécurisé que MD5. - - - - - + + + +
Fonctions renvoyant des constantes UUID - - - - uuid_nil() - + + + + + Fonction + - Une constante UUID nil, qui ne correspond pas à un UUID réel. + Description + + + + + + + + uuid_nil () + uuid - - - - uuid_ns_dns() - - Constante désignant l'espace de nom pour les UUID. + Renvoie une constante UUID nil, qui ne correspond pas à + un UUID réel. + + + + + + uuid_ns_dns () + uuid - - - - uuid_ns_url() - - Constante désignant l'espace de nom URL pour les UUID. + Renvoie une constante désignant l'espace de nom pour les UUID. + + + + + + uuid_ns_url () + uuid - - - - uuid_ns_oid() - - Constante désignant l'espace de nom des identifiants d'objets ISO - pour les UUIDs. (Ceci aboutit aux OID ASN.1, mais n'a pas de - relation avec les OID de PostgreSQL.) + Renvoie une constante désignant l'espace de nom URL pour les UUID. + + + + + + uuid_ns_oid () + uuid - - - - uuid_ns_x500() - - Constante désignant l'espace de nom X.500 distinguished - name (DN) pour les UUID. + Renvoie une constante désignant l'espace de nom des identifiants + d'objets ISO pour les UUIDs. (Ceci aboutit aux OID ASN.1, mais n'a + pas de relation avec les OID de PostgreSQL.) + + + + + + uuid_ns_x500 () + uuid - - - - + + Renvoie une constante désignant l'espace de nom X.500 distinguished + name (DN) pour les UUID. + + + +
@@ -191,15 +243,6 @@ sur une même machone, de ce fait, configure n'en choisit pas une de façon automatique. - - - - Si vous avez seulement besoin d'UUID (version 4) générés au hasard, - considérez à la place l'utilisation de la fonction - gen_random_uuid() du module . - - @@ -209,4 +252,3 @@ - diff --git a/postgresql/vacuumlo.xml b/postgresql/vacuumlo.xml index 4273db358..0a3549e79 100644 --- a/postgresql/vacuumlo.xml +++ b/postgresql/vacuumlo.xml @@ -206,6 +206,13 @@ variables d'environnement supportées par libpq (voir ). + + + The environment variable PG_COLOR specifies whether to use + color in diagnostic messages. Possible values are + always, auto and + never. + diff --git a/postgresql/version.xml b/postgresql/version.xml index 30f63813b..55d4efa62 100644 --- a/postgresql/version.xml +++ b/postgresql/version.xml @@ -1,2 +1,2 @@ - - + + diff --git a/postgresql/xfunc.xml b/postgresql/xfunc.xml index ab7809a37..193c67135 100644 --- a/postgresql/xfunc.xml +++ b/postgresql/xfunc.xml @@ -396,11 +396,15 @@ $$ LANGUAGE SQL; - Une fonction SQL doit retourner exactement le type de - donnée présent dans sa définition. Cela peut nécessiter d'insérer un - transtypage explicite. Par exemple, supposons que nous voulions que la + If the final SELECT or RETURNING + clause in a SQL function does not return exactly + the function's declared result + type, PostgreSQL will automatically cast + the value to the required type, if that is possible with an implicit + or assignment cast. Otherwise, you must write an explicit cast. + Par exemple, supposons que nous voulions que la précédente fonction add_em retourne un type - float8 à la place. Ceci ne fonctionne pas : + float8 à la place. Il suffit d'écrire : CREATE FUNCTION add_em(integer, integer) RETURNS float8 AS $$ @@ -408,16 +412,10 @@ CREATE FUNCTION add_em(integer, integer) RETURNS float8 AS $$ $$ LANGUAGE SQL; - bien que dans d'autres contextes, PostgreSQL - serait prêt à insérer un transtypage explicite pour convertir - le type integer en type float8. - Nous devons l'écrire ainsi ; - - -CREATE FUNCTION add_em(integer, integer) RETURNS float8 AS $$ - SELECT ($1 + $2)::float8; -$$ LANGUAGE SQL; - + since the integer sum can be implicitly cast + to float8. + (See or + for more about casts.) @@ -509,7 +507,7 @@ $$ LANGUAGE SQL; L'ordre de la liste du SELECT doit être exactement le même que celui - dans lequel les colonnes apparaissent dans la table associée au type + dans lequel les colonnes apparaissent dans le type composite (donner des noms aux colonnes dans le corps de la fonction, comme nous l'avons fait dans l'exemple, n'a aucune interaction avec le système). @@ -517,12 +515,12 @@ $$ LANGUAGE SQL; - Il faut s'assurer que le type de chaque expression concorde avec la - colonne correspondante du type composite, en insérant un transtypage si - nécessaire. Sinon, une erreur telle que : - ERROR: function declared to return emp returns varchar instead of text at column 1 - sera renvoyée. Comme pour le cas du type de base, la fonction - n'insèrera aucun transtypage automatiquement. + Il faut s'assurer que le type de chaque expression can be cast to that of la + colonne correspondante du type composite. Sinon, une erreur telle que : + +ERROR: return type mismatch in function declared to return emp +DETAIL: Final statement returns text instead of point at column 4. + sera renvoyée. As with the base-type case, the system will not insert explicit + casts automatically, only implicit or assignment casts. @@ -1236,16 +1234,13 @@ $$ LANGUAGE SQL; - + Fonctions <acronym>SQL</acronym> polymorphes Les fonctions SQL peuvent être déclarées pour accepter - et renvoyer les types polymorphe anyelement, - anyarray, anynonarray, anyenum - et anyrange. - Voir la pour une - explication plus approfondie. Voici une fonction polymorphe + et renvoyer les types described in . Voici une fonction polymorphe cree_tableau qui construit un tableau à partir de deux éléments de type arbitraire : @@ -1270,7 +1265,45 @@ tableau_texte; unknown n'est pas un type valide. Sans le transtypage, vous obtiendrez ce genre d'erreur : - ERROR: could not determine polymorphic type because input is UNKNOWN + +ERROR: could not determine polymorphic type because input has type unknown + + + + + With make_array declared as above, you must + provide two arguments that are of exactly the same data type; the + system will not attempt to resolve any type differences. Thus for + example this does not work: + +SELECT make_array(1, 2.5) AS numericarray; +ERROR: function make_array(integer, numeric) does not exist + + An alternative approach is to use the common family of + polymorphic types, which allows the system to try to identify a + suitable common type: + +CREATE FUNCTION make_array2(anycompatible, anycompatible) +RETURNS anycompatiblearray AS $$ + SELECT ARRAY[$1, $2]; +$$ LANGUAGE SQL; + +SELECT make_array2(1, 2.5) AS numericarray; + numericarray +-------------- + {1,2.5} +(1 row) + + Because the rules for common type resolution default to choosing + type text when all inputs are of unknown types, this + also works: + +SELECT make_array2('a', 'b') AS textarray; + textarray +----------- + {a,b} +(1 row) + @@ -1291,8 +1324,7 @@ CREATE FUNCTION fonction_invalide() RETURNS anyelement AS $$ SELECT 1; $$ LANGUAGE SQL; ERROR: cannot determine result datatype -DETAIL: A function returning a polymorphic type must have at least one -polymorphic argument. +DETAIL: A result of type anyelement requires at least one input of type anyelement, anyarray, anynonarray, anyenum, or anyrange. @@ -2099,9 +2131,9 @@ memcpy(destination->data, buffer, 40); Équivalence des types C et des types SQL intégrés - - - + + + @@ -3203,10 +3235,8 @@ CREATE OR REPLACE FUNCTION retcomposite(integer, integer) Les fonctions en langage C peuvent être déclarées pour accepter et renvoyer - les types polymorphes anyelement, - anyarray, anynonarray, anyenum et - anyrange. Voir la pour une - explication plus détaillée des fonctions polymorphes. Si les types des + les types polymorphes described in . Si les types des arguments ou du renvoi de la fonction sont définis comme polymorphes, l'auteur de la fonction ne peut pas savoir à l'avance quel type de données sera appelé ou bien quel type doit être renvoyé. Il y a deux routines @@ -3319,7 +3349,7 @@ make_array(PG_FUNCTION_ARGS) - + Mémoire partagée et LWLocks diff --git a/postgresql/xindex.xml b/postgresql/xindex.xml index 05ac41c48..c5692ef49 100644 --- a/postgresql/xindex.xml +++ b/postgresql/xindex.xml @@ -402,7 +402,7 @@ - Les B-trees requièrent une fonction support de comparaison et permet deux + Les B-trees requièrent une fonction support de comparaison et permet trois fonctions support supplémentaires à fournir comme option de la classe d'opérateur, comme indiqué dans . Les prérequis pour ces fonctions @@ -413,6 +413,8 @@
Fonctions d'appui de B-tree + + Fonction @@ -443,6 +445,13 @@ 3 + + + Determine if it is safe for indexes that use the operator + class to apply the btree deduplication optimization (optional) + + 4 +
@@ -456,6 +465,8 @@ Fonctions d'appui pour découpage + + Fonction @@ -489,6 +500,9 @@
Fonctions d'appui pour GiST + + + Fonction @@ -566,6 +580,9 @@
Fonctions de support SP-GiST + + + Fonction @@ -620,6 +637,9 @@
Fonctions d'appui GIN + + + Fonction @@ -678,6 +698,9 @@
Fonctions de support BRIN + + + Fonction @@ -983,7 +1006,8 @@ DEFAULT FOR TYPE int8 USING btree FAMILY integer_ops AS OPERATOR 5 > , FUNCTION 1 btint8cmp(int8, int8) , FUNCTION 2 btint8sortsupport(internal) , - FUNCTION 3 in_range(int8, int8, int8, boolean, boolean) ; + FUNCTION 3 in_range(int8, int8, int8, boolean, boolean) , + FUNCTION 4 btequalimage(oid) ; CREATE OPERATOR CLASS int4_ops DEFAULT FOR TYPE int4 USING btree FAMILY integer_ops AS @@ -995,7 +1019,8 @@ DEFAULT FOR TYPE int4 USING btree FAMILY integer_ops AS OPERATOR 5 > , FUNCTION 1 btint4cmp(int4, int4) , FUNCTION 2 btint4sortsupport(internal) , - FUNCTION 3 in_range(int4, int4, int4, boolean, boolean) ; + FUNCTION 3 in_range(int4, int4, int4, boolean, boolean) , + FUNCTION 4 btequalimage(oid) ; CREATE OPERATOR CLASS int2_ops DEFAULT FOR TYPE int2 USING btree FAMILY integer_ops AS @@ -1007,7 +1032,8 @@ DEFAULT FOR TYPE int2 USING btree FAMILY integer_ops AS OPERATOR 5 > , FUNCTION 1 btint2cmp(int2, int2) , FUNCTION 2 btint2sortsupport(internal) , - FUNCTION 3 in_range(int2, int2, int2, boolean, boolean) ; + FUNCTION 3 in_range(int2, int2, int2, boolean, boolean) , + FUNCTION 4 btequalimage(oid) ; ALTER OPERATOR FAMILY integer_ops USING btree ADD -- cross-type comparisons int8 vs int2 diff --git a/postgresql/xml2.xml b/postgresql/xml2.xml index d70dff168..b5d1aa5ef 100644 --- a/postgresql/xml2.xml +++ b/postgresql/xml2.xml @@ -39,171 +39,135 @@ montre les fonctions fournies par ce - module. - Ces fonctions fournissent une analyse XML et les requêtes XPath. Tous les - arguments sont du type text, ce n'est pas affiché pour que - ce soit plus court. + module. Ces fonctions fournissent une analyse XML et les requêtes XPath.
- Fonctions - - - - Fonction - Retour - Description - - - - - - - xml_valid(document) - - - - bool - - + Fonctions <filename>xml2</filename> + + + + + Fonction + - Ceci analyse un document fourni comme argument au format text et - renvoie true si le document est du XML bien formé. (Note : - c'est un alias pour la fonction PostgreSQL nommée - xml_is_well_formed(). Le nom - xml_valid() est techniquement incorrect car, en - XML, la validité ne signifie pas que le document soit bien formé, et - inversement.) - - - - - - - xpath_string(document, query) - - - - text - - + Description + + + + + + + + xml_valid ( document text ) + boolean + - Ces fonctions évaluent la requête XPath à partir du document fourni, - et convertie le résultat dans le type spécifié. + Parses the given document and returns true if the + document is well-formed XML. (Note: this is an alias for the standard + PostgreSQL function xml_is_well_formed(). The + name xml_valid() is technically incorrect since validity + and well-formedness have different meanings in XML.) + + + + + + xpath_string ( document text, query text ) + text - - - - - - xpath_number(document, query) - - - - float4 - - - - - - xpath_bool(document, query) - - - - bool - - - - - - xpath_nodeset(document, query, toptag, itemtag) - - - - text - - - Cette fonction évalue la requête sur le document et enveloppe le - résultat dans des balises XML. Si le résultat a plusieurs valeurs, - la sortie ressemblera à ceci : + Evaluates the XPath query on the supplied document, and + casts the result to text. + + + + + + xpath_number ( document text, query text ) + real - + + Evaluates the XPath query on the supplied document, and + casts the result to real. + + + + + + xpath_bool ( document text, query text ) + boolean + + + Evaluates the XPath query on the supplied document, and + casts the result to boolean. + + + + + + xpath_nodeset ( document text, query text, toptag text, itemtag text ) + text + + + Evaluates the query on the document and wraps the result in XML + tags. If the result is multivalued, the output will look like: + <toptag> -<itemtag>Valeur 1 qui pourrait être un fragment XML</itemtag> -<itemtag>Valeur 2....</itemtag> +<itemtag>Value 1 which could be an XML fragment</itemtag> +<itemtag>Value 2....</itemtag> </toptag> - - - Si toptag et/ou itemtag sont des - chaînes vides, la balise adéquate est omise. + + If either toptag + or itemtag is an empty string, the relevant tag + is omitted. + + + + + + xpath_nodeset ( document text, query text, itemtag text ) + text - - - - - - xpath_nodeset(document, query) - - - - text - - - Comme xpath_nodeset(document,query,toptag,itemtag) - mais le résultat omet les balises. + Like xpath_nodeset(document, query, toptag, itemtag) but result omits toptag. + + + + + + xpath_nodeset ( document text, query text ) + text - - - - - - xpath_nodeset(document, query, itemtag) - - - - text - - - Comme xpath_nodeset(document,query,toptag,itemtag) - mais le résultat omet les balises. + Like xpath_nodeset(document, query, toptag, itemtag) but result omits both tags. + + + + + + xpath_list ( document text, query text, separator text ) + text - - - - - - xpath_list(document, query, separator) - - - - text - - - Cette fonction renvoie plusieurs valeurs séparées par le caractère - indiqué, par exemple Valeur 1,Valeur 2,Valeur 3 si - le séparateur est une virgule (,). + Evaluates the query on the document and returns multiple values + separated by the specified separator, for example Value + 1,Value 2,Value 3 if separator + is ,. + + + + + + xpath_list ( document text, query text ) + text - - - - - - xpath_list(document, query) - - - - text - - - Ceci est un emballage de la fonction ci-dessus avec la virgule comme - séparateur. - - - + + This is a wrapper for the above function that uses , + as the separator. + + +
@@ -232,6 +196,8 @@ Paramètres de <function>xpath_table</function> + + Paramètre diff --git a/postgresql/xoper.xml b/postgresql/xoper.xml index 478eec854..53b102bf2 100644 --- a/postgresql/xoper.xml +++ b/postgresql/xoper.xml @@ -275,6 +275,18 @@ l'optimiseur ne seront pas aussi bonnes qu'elles pourraient l'être. + + Another useful built-in selectivity estimation function + is matchingsel, which will work for almost any + binary operator, if standard MCV and/or histogram statistics are + collected for the input data type(s). Its default estimate is set to + twice the default estimate used in eqsel, making + it most suitable for comparison operators that are somewhat less + strict than equality. (Or you could call the + underlying generic_restriction_selectivity + function, providing a different default estimate.) + + D'autres fonctions d'estimation de sélectivité conçues pour les opérateurs géométriques sont placées dans @@ -318,6 +330,7 @@ scalarlejoinsel pour <= scalargtjoinsel pour > scalargejoinsel pour >= + matchingjoinsel for generic matching operators areajoinsel pour des comparaisons basées sur une aire 2D positionjoinsel pour des comparaisons basées sur des positions 2D contjoinsel pour des comparaisons basées sur un appartenance 2D diff --git a/postgresql/xplang.xml b/postgresql/xplang.xml index 1be7f8991..234ab4850 100644 --- a/postgresql/xplang.xml +++ b/postgresql/xplang.xml @@ -196,7 +196,7 @@ CREATE FUNCTION nom_fonction_en_ligne(internal) et une fonction de validation, donc nous déclarons aussi celles-ci : CREATE FUNCTION plperl_inline_handler(internal) RETURNS void AS - '$libdir/plperl' LANGUAGE C; + '$libdir/plperl' LANGUAGE C STRICT; CREATE FUNCTION plperl_validator(oid) RETURNS void AS '$libdir/plperl' LANGUAGE C STRICT;