Skip to content

Commit

Permalink
Mise à jour en version 12.3
Browse files Browse the repository at this point in the history
  • Loading branch information
gleu committed May 14, 2020
1 parent 8606ed4 commit 45e9a30
Show file tree
Hide file tree
Showing 35 changed files with 2,118 additions and 335 deletions.
42 changes: 21 additions & 21 deletions postgresql/advanced.xml
Original file line number Diff line number Diff line change
Expand Up @@ -597,20 +597,20 @@ SELECT sum(salaire) OVER w, avg(salaire) OVER w
<programlisting>CREATE TABLE capitales (
nom text,
population real,
altitude int, -- (en pied)
elevation int, -- (en pied)
etat char(2)
);

CREATE TABLE non_capitales (
nom text,
population real,
altitude int -- (en pied)
elevation int -- (en pied)
);

CREATE VIEW villes AS
SELECT nom, population, altitude FROM capitales
SELECT nom, population, elevation FROM capitales
UNION
SELECT nom, population, altitude FROM non_capitales;</programlisting>
SELECT nom, population, elevation FROM non_capitales;</programlisting>

Cela fonctionne bien pour les requêtes, mais la mise à jour d'une même
donnée sur plusieurs lignes devient vite un horrible casse-tête.
Expand All @@ -622,7 +622,7 @@ CREATE VIEW villes AS
<programlisting>CREATE TABLE villes (
nom text,
population real,
altitude int -- (en pied)
elevation int -- (en pied)
);

CREATE TABLE capitales (
Expand All @@ -634,7 +634,7 @@ CREATE TABLE capitales (
Dans ce cas, une ligne de <classname>capitales</classname>
<firstterm>hérite</firstterm> de toutes les colonnes
(<structfield>nom</structfield>, <structfield>population</structfield> et
<structfield>altitude</structfield>) de son <firstterm>parent</firstterm>,
<structfield>elevation</structfield>) de son <firstterm>parent</firstterm>,
<classname>villes</classname>. Le type de la colonne
<structfield>nom</structfield> est <type>text</type>, un type natif de
<productname>PostgreSQL</productname> pour les chaînes de caractères à
Expand All @@ -646,35 +646,35 @@ CREATE TABLE capitales (

<para>
La requête qui suit fournit un exemple d'extraction des noms de toutes les
villes, en incluant les capitales des états, situées à une altitude de plus
villes, en incluant les capitales des états, situées à une elevation de plus
de 500 pieds&nbsp;:

<programlisting>SELECT nom, altitude
<programlisting>SELECT nom, elevation
FROM villes
WHERE altitude &gt; 500;</programlisting>
WHERE elevation &gt; 500;</programlisting>

ce qui renvoie&nbsp;:

<screen> nom | altitude
-----------+----------
Las Vegas | 2174
Mariposa | 1953
Madison | 845
<screen> nom | elevation
-----------+-----------
Las Vegas | 2174
Mariposa | 1953
Madison | 845
(3 rows)</screen>
</para>

<para>
À l'inverse, la requête qui suit récupère toutes les villes qui ne sont pas
des capitales et qui sont situées à une altitude d'au moins 500 pieds&nbsp;:
des capitales et qui sont situées à une élévation d'au moins 500 pieds&nbsp;:

<programlisting>SELECT nom, altitude
<programlisting>SELECT nom, elevation
FROM ONLY villes
WHERE altitude &gt; 500;</programlisting>
WHERE elevation &gt; 500;</programlisting>

<screen> nom | altitude
-----------+----------
Las Vegas | 2174
Mariposa | 1953
<screen> nom | elevation
-----------+-----------
Las Vegas | 2174
Mariposa | 1953
(2 rows)</screen>
</para>

Expand Down
13 changes: 13 additions & 0 deletions postgresql/config.xml
Original file line number Diff line number Diff line change
Expand Up @@ -3603,6 +3603,19 @@ restore_command = 'copy "C:\\server\\archivedir\\%f" "%p"' # Windows
option en incluant) celle indiquée. Le point d'arrêt précis est aussi
influencé par <xref linkend="guc-recovery-target-inclusive"/>.
</para>

<para>
La valeur de ce paramètre est un horodatage dans le même format que
celui accepté par le type de données <type>timestamp with time
zone</type>, à l'exception que vous ne pouvez pas utiliser une
abréviation de fuseau horaire (sauf si le paramètre <xref
linkend="guc-timezone-abbreviations"/> a été configuré précédemment
dans le fichier de configuration). Le style préféré est d'utiliser un
décalage numérique à partir d'UTC. Vous pouvez aussi écrire un nom
complet de fuseau horaire, par exemple
<literal>Europe/Helsinki</literal>, et non pas
<literal>EEST</literal>.
</para>
</listitem>
</varlistentry>

Expand Down
133 changes: 80 additions & 53 deletions postgresql/ddl.xml
Original file line number Diff line number Diff line change
Expand Up @@ -335,6 +335,32 @@ CREATE TABLE people (
Voir <xref linkend="sql-createforeigntable"/> pour les détails.
</para>
</listitem>
<listitem>
<para>Pour l'héritage&nbsp;:</para>
<itemizedlist>
<listitem>
<para>
Si une colonne parent est une colonne générée, une colonne enfant doit
aussi être une colonne générée utilisant la même expression. Dans la
définition de la colonne enfant, laissez la clause
<literal>GENERATED</literal>, car elle sera copiée du parent.
</para>
</listitem>
<listitem>
<para>
Dans le cas d'héritage multiple, si une colonne parent est une colonne
générée, alors toutes les colonnes parents doivent être des colonnes
générées et avec la même expression.
</para>
</listitem>
<listitem>
<para>
Si une colonne parent n'est pas une colonne générée, une colonne
enfant pourrait être définie comme colonne générée ou pas.
</para>
</listitem>
</itemizedlist>
</listitem>
</itemizedlist>
</para>

Expand Down Expand Up @@ -2726,21 +2752,21 @@ SELECT * FROM information WHERE groupe_id = 2 FOR UPDATE;
</indexterm>

<para>
Un cluster de bases de données <productname>PostgreSQL</productname>
contient une (ou plusieurs) base(s) nommée(s). Si les utilisateurs et groupes
d'utilisateurs sont partagés sur l'ensemble du cluster, aucune
autre donnée n'est partagée. Toute connexion cliente
au serveur ne peut accéder qu'aux données d'une seule base, celle
Une instance de bases de données <productname>PostgreSQL</productname>
contient une ou plusieurs base(s) nommée(s). Les rôles et quelques autres
types d'objets sont partagés sur l'ensemble de l'instance. Une connexion
cliente au serveur ne peut accéder qu'aux données d'une seule base, celle
indiquée dans la requête de connexion.
</para>

<note>
<para>
Les utilisateurs d'un cluster n'ont pas obligatoirement le droit d'accéder à
toutes les bases du cluster. Le partage des noms d'utilisateur signifie
qu'il ne peut pas y avoir plusieurs utilisateurs nommés <literal>joe</literal>,
par exemple, dans deux bases du même cluster&nbsp;; mais le système peut être
configuré pour n'autoriser <literal>joe</literal> à accéder qu'à certaines bases.
Les rôles d'une instance n'ont pas obligatoirement le droit d'accéder à
toutes les bases de l'instance. Le partage des noms de rôles signifie
qu'il ne peut pas y avoir plusieurs rôles nommés <literal>joe</literal>,
par exemple, dans deux bases de la même instance&nbsp;; mais le système
peut être configuré pour n'autoriser <literal>joe</literal> à accéder qu'à
certaines bases.
</para>
</note>

Expand Down Expand Up @@ -3246,7 +3272,7 @@ SELECT * FROM information WHERE groupe_id = 2 FOR UPDATE;
<programlisting>CREATE TABLE villes (
nom text,
population float,
altitude int -- (en pied)
elevation int -- (en pied)
);

CREATE TABLE capitales (
Expand All @@ -3266,37 +3292,37 @@ CREATE TABLE capitales (
descendantes. Ce dernier comportement est celui par défaut.
</para>
<para>
Par exemple, la requête suivante retourne les noms et altitudes de toutes
les villes, y compris les capitales, situées à une altitude supérieure
Par exemple, la requête suivante retourne les noms et elevations de toutes
les villes, y compris les capitales, situées à une élévation supérieure
à 500 pieds&nbsp;:

<programlisting>SELECT nom, altitude
<programlisting>SELECT nom, elevation
FROM villes
WHERE altitude &gt; 500;</programlisting>
WHERE elevation &gt; 500;</programlisting>

Avec les données du tutoriel de <productname>PostgreSQL</productname>
(voir <xref linkend="tutorial-sql-intro"/>), ceci renvoie&nbsp;:

<programlisting> nom | altitude
-----------+----------
Las Vegas | 2174
Mariposa | 1953
Madison | 845</programlisting>
<programlisting> nom | elevation
-----------+-----------
Las Vegas | 2174
Mariposa | 1953
Madison | 845</programlisting>
</para>

<para>
D'un autre côté, la requête suivante retourne les noms et altitudes
D'un autre côté, la requête suivante retourne les noms et elevations
de toutes les villes, qui ne sont
pas des capitales, situées à une altitude supérieure à 500 pieds&nbsp;:
pas des capitales, situées à une élévation supérieure à 500 pieds&nbsp;:

<programlisting>SELECT nom, altitude
<programlisting>SELECT nom, elevation
FROM ONLY villes
WHERE altitude &gt; 500;
WHERE elevation &gt; 500;

nom | altitude
-----------+----------
Las Vegas | 2174
Mariposa | 1953</programlisting>
nom | elevation
-----------+-----------
Las Vegas | 2174
Mariposa | 1953</programlisting>
</para>

<para>
Expand All @@ -3314,9 +3340,9 @@ CREATE TABLE capitales (
Vous pouvez aussi écrire le nom de la table avec un astérisque (<literal>*</literal>)
à la fin pour indiquer spécifiquement que les tables filles sont incluses&nbsp;:

<programlisting>SELECT name, altitude
<programlisting>SELECT name, elevation
FROM cities*
WHERE altitude &gt; 500;</programlisting>
WHERE elevation &gt; 500;</programlisting>

Écrire l'astérisque (<literal>*</literal>) n'est pas nécessaire, puisque ce
comportement est toujours le comportement par défaut. Toutefois, cette
Expand All @@ -3329,33 +3355,33 @@ CREATE TABLE capitales (
une ligne donnée. Une colonne système appelée <structfield>TABLEOID</structfield>,
présente dans chaque table, donne la table d'origine&nbsp;:

<programlisting>SELECT v.tableoid, v.nom, v.altitude
<programlisting>SELECT v.tableoid, v.nom, v.elevation
FROM villes v
WHERE v.altitude &gt; 500;</programlisting>
WHERE v.elevation &gt; 500;</programlisting>

qui renvoie&nbsp;:

<programlisting> tableoid | nom | altitude
----------+-----------+----------
139793 | Las Vegas | 2174
139793 | Mariposa | 1953
139798 | Madison | 845</programlisting>
<programlisting> tableoid | nom | elevation
----------+-----------+-----------
139793 | Las Vegas | 2174
139793 | Mariposa | 1953
139798 | Madison | 845</programlisting>

(Reproduire cet exemple conduit probablement à des
OID numériques différents). Une jointure avec
<structname>pg_class</structname>, permet d'obtenir les noms réels des tables&nbsp;:

<programlisting>SELECT p.relname, v.nom, v.altitude
<programlisting>SELECT p.relname, v.nom, v.elevation
FROM villes v, pg_class p
WHERE v.altitude &gt; 500 AND v.tableoid = p.oid;</programlisting>
WHERE v.elevation &gt; 500 AND v.tableoid = p.oid;</programlisting>

ce qui retourne&nbsp;:

<programlisting> relname | nom | altitude
-----------+-----------+----------
villes | Las Vegas | 2174
villes | Mariposa | 1953
capitales | Madison | 845</programlisting>
<programlisting> relname | nom | elevation
-----------+-----------+-----------
villes | Las Vegas | 2174
villes | Mariposa | 1953
capitales | Madison | 845</programlisting>

</para>

Expand All @@ -3365,9 +3391,9 @@ WHERE v.altitude &gt; 500 AND v.tableoid = p.oid;</programlisting>
façon symbolique&nbsp;:

<programlisting>
SELECT v.tableoid::regclass, v.nom, v.altitude
SELECT v.tableoid::regclass, v.nom, v.elevation
FROM villes v
WHERE v.altitude &gt; 500;
WHERE v.elevation &gt; 500;
</programlisting>
</para>

Expand All @@ -3376,7 +3402,7 @@ WHERE v.altitude &gt; 500;
<command>INSERT</command> ou <command>COPY</command> aux autres tables de
la hiérarchie de l'héritage. Dans l'exemple considéré, l'instruction
<command>INSERT</command> suivante échoue&nbsp;:
<programlisting>INSERT INTO villes (nom, population, altitude, etat)
<programlisting>INSERT INTO villes (nom, population, elevation, etat)
VALUES ('Albany', NULL, NULL, 'NY');</programlisting>
On pourrait espérer que les données soient d'une manière ou d'une autre
acheminées vers la table <structname>capitales</structname>, mais ce n'est
Expand Down Expand Up @@ -3838,9 +3864,9 @@ VALUES ('Albany', NULL, NULL, 'NY');</programlisting>
</para>

<para>
Les partitions peuvent également être des tables étrangères, bien que ce cas ait des
limitations qui n'existent pas avec des tables normales&nbsp;; see <xref linkend="sql-createforeigntable"/> for
more information.
Les partitions peuvent également être des tables étrangères, bien que ce
cas ait des limitations qui n'existent pas avec des tables normales&nbsp;;
voir <xref linkend="sql-createforeigntable"/> pour plus d'informations.
</para>

<para>
Expand Down Expand Up @@ -4292,9 +4318,10 @@ ALTER INDEX measurement_city_id_logdate_key
<title>Exemple</title>

<para>
Nous utilisons la même table <structname>measurement</structname> que
nous avons déjà utilisée au-dessus. Pour l'implémenter le partitionnement
en utilisant l'héritage, utilisez les étapes suivantes&nbsp;:
Nous utilisons la même table <structname>measurement</structname> non
partitionnée que nous avons déjà utilisée au-dessus. Pour l'implémenter
le partitionnement en utilisant l'héritage, utilisez les étapes
suivantes&nbsp;:

<orderedlist spacing="compact">
<listitem>
Expand Down
17 changes: 15 additions & 2 deletions postgresql/extend.xml
Original file line number Diff line number Diff line change
Expand Up @@ -264,10 +264,11 @@
<type>anyrange</type> doivent toutes être du même type.
De la même façon, elles doivent toutes être du
<emphasis>même</emphasis> type. Si des occurrences sont déclarées comme
<type>anyarray</type> et d'autres comme <type>anyelement</type>, le type
<type>anyarray</type> et d'autres comme <type>anyelement</type> ou <type>anyarray</type>, le type
réel de tableau des occurrences <type>anyarray</type> doit être un tableau
dont les éléments sont du même type que ceux apparaissant dans les
occurrences de type <type>anyelement</type>.
occurrences de type <type>anyelement</type> ou du même type que ceux apparaissant dans les
occurrences de type <type>anyarray</type>.
De la même façon, si des occurences sont déclarées de type
<type>anyrange</type> et d'autres de type <type>anyelement</type>, le type
range réel dans les occurences de <type>anyrange</type> doit être un type
Expand Down Expand Up @@ -304,6 +305,18 @@
tableaux contenant des valeurs de type enum.
</para>

<para>
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&nbsp; par exemple <type>anyarray</type> peut
être déduit à partir de <type>anyelement</type> et vice versa. L'exception
est qu'un résultat polymorphique de type <type>anyrange</type> nécessite
un argument de type <type>anyrange</type>&nbsp;; il ne peut pas être
déduit d'arguments <type>anyarray</type> ou <type>anyelement</type>. Ceci
est dû au fait qu'il pourrait y avoir plusieurs types d'intervalles avec
le même sous-type.
</para>

<para>
<type>anynonarray</type> et <type>anyenum</type> ne représentent
pas des variables de type séparé&nbsp;; elles sont du même type que
Expand Down

0 comments on commit 45e9a30

Please sign in to comment.