doc: improve description of privileges for MERGE and update glossary.
authorDean Rasheed <[email protected]>
Sat, 18 Nov 2023 12:41:23 +0000 (12:41 +0000)
committerDean Rasheed <[email protected]>
Sat, 18 Nov 2023 12:41:23 +0000 (12:41 +0000)
On the MERGE page, the description of the privileges required could be
taken to imply that the SELECT privilege is required on all columns of
the data source, whereas actually it is only required on the columns
referred to by conditions or expressions in the MERGE command. Re-word
it to make that a little clearer, and mention expressions as well as
conditions.

Also, add a glossary entry for MERGE, and nearby on the glossary page,
mention MERGE in the list of commands that cannot update a
materialized view.

Noted by Jian He.  by me, reviewed by Jian He.

Discussion: https://postgr.es/m/CACJufxHuSoRXKwr0MtSFLXuT2nFVWcVfEWhxg7qdP9h%2Bs3a%2BUw%40mail.gmail.com

doc/src/sgml/glossary.sgml
doc/src/sgml/ref/merge.sgml

index fe8def41d04829449699cbd5c906f655b3020101..5815fa44710f1a1fea73aa073cb22f5016dd33bf 100644 (file)
      (just like a <glossterm linkend="glossary-view">view</glossterm>),
      but stores data in the same way that a
      <glossterm linkend="glossary-table">table</glossterm> does. It cannot be
-     modified via <command>INSERT</command>, <command>UPDATE</command>, or
-     <command>DELETE</command> operations.
+     modified via <command>INSERT</command>, <command>UPDATE</command>,
+     <command>DELETE</command>, or <command>MERGE</command> operations.
     </para>
     <para>
      For more information, see
    </glossdef>
   </glossentry>
 
+  <glossentry id="glossary-merge">
+   <glossterm>Merge</glossterm>
+   <glossdef>
+    <para>
+     An <acronym>SQL</acronym> command used to conditionally add, modify,
+     or remove <glossterm linkend="glossary-tuple">rows</glossterm>
+     in a given <glossterm linkend="glossary-table">table</glossterm>,
+     using data from a source
+     <glossterm linkend="glossary-relation">relation</glossterm>.
+    </para>
+    <para>
+     For more information, see
+     <xref linkend="sql-merge"/>.
+    </para>
+   </glossdef>
+  </glossentry>
+
   <glossentry id="glossary-mvcc">
    <glossterm>Multi-version concurrency control (MVCC)</glossterm>
    <glossdef>
index 0f61d472cd8251e8e56cd73a6827deb93798eb35..d5ad930eef252a7743756c7734c1767f4cfdc936 100644 (file)
@@ -102,14 +102,14 @@ DELETE
    that are referred to in the <literal>SET</literal> clause.
    If you specify an insert action, you must have the <literal>INSERT</literal>
    privilege on the <replaceable class="parameter">target_table_name</replaceable>.
-   If you specify an delete action, you must have the <literal>DELETE</literal>
+   If you specify a delete action, you must have the <literal>DELETE</literal>
    privilege on the <replaceable class="parameter">target_table_name</replaceable>.
    Privileges are tested once at statement start and are checked
    whether or not particular <literal>WHEN</literal> clauses are executed.
-   You will require the <literal>SELECT</literal> privilege on the
-   <replaceable class="parameter">data_source</replaceable> and any column(s)
-   of the <replaceable class="parameter">target_table_name</replaceable>
-   referred to in a <literal>condition</literal>.
+   You will require the <literal>SELECT</literal> privilege on any column(s)
+   of the <replaceable class="parameter">data_source</replaceable> and
+   <replaceable class="parameter">target_table_name</replaceable> referred to
+   in any <literal>condition</literal> or <literal>expression</literal>.
   </para>
 
   <para>