public inbox for pgsql-performance@postgresql.org  
help / color / mirror / Atom feed
From: Erik Rijkers <er@xs4all.nl>
To: Pavel Stehule <pavel.stehule@gmail.com>
Cc: Michael Paquier <michael@paquier.xyz>
Cc: Zhihong Yu <zyu@yugabyte.com>
Cc: Amit Kapila <amit.kapila16@gmail.com>
Cc: DUVAL REMI <REMI.DUVAL@cheops.fr>
Cc: PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Subject: Re: proposal: schema variables
Date: Fri, 08 Jan 2021 18:54:55 +0100
Message-ID: <bdeb7611c6dbf22226c302bcc01d178b@xs4all.nl> (raw)
In-Reply-To: <CAFj8pRD+QiWOoPrFk2NnPs3t5Eaf4X=aGRV-9ww11cnPP+fV4g@mail.gmail.com>
References: <CAFj8pRBoGBKopkiTa4ki3dMgy-cSTRZ-BQPKOq7=Tk0SSNsowA@mail.gmail.com>
	<CAFj8pRBCiWn12H9FHymYs17fk68nRd9Xpn+SYf18TLdb2YSUrQ@mail.gmail.com>
	<CAA4eK1JV-Ox0oRFdXnPqXSzM84wTR5QFkRzCpNVF_+0FNjS5Mg@mail.gmail.com>
	<CAFj8pRByCCcgDkeXyafAnH6LgxtAyCVwg6yfJAhyTY6GLscfZg@mail.gmail.com>
	<CAFj8pRBvUonC_ug3F=w1Q55Dp=DggojvAeL7Vmh14Q-WhFHxzw@mail.gmail.com>
	<CAFj8pRDj72P-f=SUygtOXnTOBQ0RzmL_fN=wLfaCzcbPVpGgzw@mail.gmail.com>
	<CAFj8pRDD2GQaJ_iDT4vSVe658+oHRXU2S2af7Y1-it9jaP8VFg@mail.gmail.com>
	<20200924035637.GF28585@paquier.xyz>
	<CAFj8pRAFktynx5wkanv5SRuzXkZgXu77XpVACiSE=v7i1xHFbw@mail.gmail.com>
	<CAFj8pRA=bn_g5T2AZduy5gNOQoOnUJ+pMHmnRMHi6mR0n=TAsA@mail.gmail.com>
	<20201001033824.GC8130@paquier.xyz>
	<CAFj8pRC9de05HSb4tEHDUwJ98+4Wh30W-rJrNOPnTz6ARcv0Fw@mail.gmail.com>
	<CAFj8pRBC5Wz1xHKKBmKsM0xYN0+PdSZ5oXPsk5SZt+VprdUW3A@mail.gmail.com>
	<CAFj8pRAh4pzMoZrKCLt9h+Lr2L=vhgs2PjAF45uLbp_7sijM5w@mail.gmail.com>
	<CAFj8pRA-kxQ1oErcuDeUKYsrgwB5XGLhquatwxOe3dCVy1gcyQ@mail.gmail.com>
	<51a9a68e8a998d04df17417d45c1dbd4@xs4all.nl>
	<CAFj8pRBbt2xhY9PyabOY0ZN+Aig6ee3oCon-DM9qi0Uw_3qfbw@mail.gmail.com>
	<CAFj8pRDSa52J7kPmCYXgq1BBbu3YBXwpdSOVpjgU=hnE2k04Cw@mail.gmail.com>
	<CAFj8pRD+QiWOoPrFk2NnPs3t5Eaf4X=aGRV-9ww11cnPP+fV4g@mail.gmail.com>

On 2021-01-08 07:20, Pavel Stehule wrote:
> Hi
> 
> just rebase
> 
> [schema-variables-20200108.patch]

Hey Pavel,

My gcc 8.3.0 compile says:
(on debian 10/Buster)

utility.c: In function ‘CreateCommandTag’:
utility.c:2332:8: warning: this statement may fall through 
[-Wimplicit-fallthrough=]
     tag = CMDTAG_SELECT;
     ~~~~^~~~~~~~~~~~~~~
utility.c:2334:3: note: here
    case T_LetStmt:
    ^~~~


compile, check, check-world, runs without further problem.

I also changed a few typos/improvements in the documentation, see 
attached.

One thing I wasn't sure of: I have assumed that
   ON TRANSACTIONAL END RESET

should be
   ON TRANSACTION END RESET

and changed it accordingly, please double-check.


Erik Rijkers


Attachments:

  [text/x-diff] create_variable.sgml.20210108.diff (4.6K, 2-create_variable.sgml.20210108.diff)
  download | inline diff:
--- doc/src/sgml/ref/create_variable.sgml.orig	2021-01-08 17:40:20.181823036 +0100
+++ doc/src/sgml/ref/create_variable.sgml	2021-01-08 17:59:46.976127524 +0100
@@ -16,7 +16,7 @@
 
  <refnamediv>
   <refname>CREATE VARIABLE</refname>
-  <refpurpose>define a new permissioned typed schema variable</refpurpose>
+  <refpurpose>define a schema variable</refpurpose>
  </refnamediv>
 
  <refsynopsisdiv>
@@ -29,24 +29,24 @@
   <title>Description</title>
 
   <para>
-   The <command>CREATE VARIABLE</command> command creates a new schema variable.
+   The <command>CREATE VARIABLE</command> command creates a schema variable.
    Schema variables, like relations, exist within a schema and their access is
    controlled via <command>GRANT</command> and <command>REVOKE</command> commands.
-   Their changes are non-transactional by default.
+   Changing a schema variable is non-transactional by default.
   </para>
 
   <para>
    The value of a schema variable is local to the current session. Retrieving
    a variable's value returns either a NULL or a default value, unless its value
    is set to something else in the current session with a LET command. By default,
-   the content of variable is not transactional, alike regular variables in PL languages.
+   the content of a variable is not transactional. This is the same as in regular variables in PL languages.
   </para>
 
   <para>
-   Schema variables are retrieved by the regular <command>SELECT</command> SQL command.
-   Their value can be set with the <command>LET</command> SQL command.
-   Notably, while schema variables share properties with tables, they cannot be updated
-   with <command>UPDATE</command> commands.
+   Schema variables are retrieved by the <command>SELECT</command> SQL command.
+   Their value is set with the <command>LET</command> SQL command.
+   While schema variables share properties with tables, their value cannot be updated
+   with an <command>UPDATE</command> command.
   </para>
  </refsect1>
 
@@ -76,7 +76,7 @@
     <term><replaceable class="parameter">name</replaceable></term>
     <listitem>
      <para>
-      The name (optionally schema-qualified) of the variable to create.
+      The name, optionally schema-qualified, of the variable.
      </para>
     </listitem>
    </varlistentry>
@@ -85,7 +85,7 @@
     <term><replaceable class="parameter">data_type</replaceable></term>
     <listitem>
      <para>
-      The name (optionally schema-qualified) of the data type of the variable to be created.
+      The name, optionally schema-qualified, of the data type of the variable.
      </para>
     </listitem>
    </varlistentry>
@@ -105,7 +105,7 @@
     <term><literal>NOT NULL</literal></term>
     <listitem>
      <para>
-      The <literal>NOT NULL</literal> clause forbid to set the variable to
+      The <literal>NOT NULL</literal> clause forbids to set the variable to
       a null value. A variable created as NOT NULL and without an explicitly
       declared default value cannot be read until it is initialized by a LET
       command. This obliges the user to explicitly initialize the variable
@@ -118,22 +118,22 @@
     <term><literal>DEFAULT <replaceable>default_expr</replaceable></literal></term>
     <listitem>
      <para>
-      The <literal>DEFAULT</literal> clause assigns a default data to
-      schema variable.
+      The <literal>DEFAULT</literal> clause can be used to assign a default value to
+      a schema variable.
      </para>
     </listitem>
    </varlistentry>
 
    <varlistentry>
-    <term><literal>ON COMMIT DROP</literal>, <literal>ON TRANSACTIONAL END RESET</literal></term>
+    <term><literal>ON COMMIT DROP</literal>, <literal>ON TRANSACTION END RESET</literal></term>
     <listitem>
      <para>
       The <literal>ON COMMIT DROP</literal> clause specifies the behaviour
-      of temporary schema variable at transaction commit. With this clause the
+      of a temporary schema variable at transaction commit. With this clause the
       variable is dropped at commit time. The clause is only allowed
-      for temporary variables. The <literal>ON TRANSACTIONAL END RESET</literal>
+      for temporary variables. The <literal>ON TRANSACTION END RESET</literal>
       clause enforces the variable to be reset to its default value when
-      the transaction is either commited or rolled back.
+      the transaction is committed or rolled back.
      </para>
     </listitem>
    </varlistentry>
@@ -145,7 +145,7 @@
   <title>Notes</title>
 
   <para>
-   Use <command>DROP VARIABLE</command> command to remove a variable.
+   Use the <command>DROP VARIABLE</command> command to remove a variable.
   </para>
  </refsect1>
 


  [text/x-diff] discard.sgml.20210108.diff (299B, 3-discard.sgml.20210108.diff)
  download | inline diff:
--- doc/src/sgml/ref/discard.sgml.orig	2021-01-08 18:02:25.837531779 +0100
+++ doc/src/sgml/ref/discard.sgml	2021-01-08 18:40:09.973630164 +0100
@@ -104,6 +104,7 @@
 DISCARD PLANS;
 DISCARD TEMP;
 DISCARD SEQUENCES;
+DISCARD VARIABLES;
 </programlisting></para>
     </listitem>
    </varlistentry>


  [text/x-diff] drop_variable.sgml.20210108.diff (674B, 4-drop_variable.sgml.20210108.diff)
  download | inline diff:
--- doc/src/sgml/ref/drop_variable.sgml.orig	2021-01-08 18:05:28.643147771 +0100
+++ doc/src/sgml/ref/drop_variable.sgml	2021-01-08 18:07:17.876113523 +0100
@@ -16,7 +16,7 @@
 
  <refnamediv>
   <refname>DROP VARIABLE</refname>
-  <refpurpose>removes a schema variable</refpurpose>
+  <refpurpose>remove a schema variable</refpurpose>
  </refnamediv>
 
  <refsynopsisdiv>
@@ -52,7 +52,7 @@
     <term><replaceable class="parameter">name</replaceable></term>
     <listitem>
      <para>
-      The name (optionally schema-qualified) of a schema variable.
+      The name, optionally schema-qualified, of a schema variable.
      </para>
     </listitem>
    </varlistentry>


  [text/x-diff] let.sgml.20210108.diff (1.1K, 5-let.sgml.20210108.diff)
  download | inline diff:
--- doc/src/sgml/ref/let.sgml.orig	2021-01-08 18:09:52.757482768 +0100
+++ doc/src/sgml/ref/let.sgml	2021-01-08 18:13:23.071342113 +0100
@@ -44,16 +44,16 @@
     <term><literal>schema_variable</literal></term>
     <listitem>
      <para>
-      The name of schema variable.
+      The name of the schema variable.
      </para>
     </listitem>
    </varlistentry>
 
    <varlistentry>
-    <term><literal>sql expression</literal></term>
+    <term><literal>sql_expression</literal></term>
     <listitem>
      <para>
-      An SQL expression, whose result is casted into the schema variable's type.
+      An SQL expression. The result is cast into the schema variable's type.
      </para>
     </listitem>
    </varlistentry>
@@ -62,7 +62,7 @@
     <term><literal>DEFAULT</literal></term>
     <listitem>
      <para>
-      Reset the schema variable to its default value, if it is defined.
+      Reset the schema variable to its default value, if that is defined.
       If no explicit default value has been assigned, the schema variable
       is set to NULL.
      </para>


  [text/x-diff] plpgsql.sgml.20210108.diff (845B, 6-plpgsql.sgml.20210108.diff)
  download | inline diff:
--- doc/src/sgml/plpgsql.sgml.orig	2021-01-08 17:35:20.639186557 +0100
+++ doc/src/sgml/plpgsql.sgml	2021-01-08 17:37:36.108377973 +0100
@@ -5870,10 +5870,10 @@
     <title><command>Global variables and constants</command></title>
 
     <para>
-     The <application>PL/pgSQL</application> language has no packages
-     and then it has not package variables and package constants. The
+     The <application>PL/pgSQL</application> language has no packages,
+     and therefore no package variables or package constants. The
      <productname>PostgreSQL</productname> has schema variables and
-     immutable schema variables. The schema variables can be created
+     immutable schema variables. Schema variables can be created
      by <command>CREATE VARIABLE</command> described in <xref
      linkend="sql-createvariable"/>.
     </para>


reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: pgsql-performance@postgresql.org
  Cc: er@xs4all.nl, pavel.stehule@gmail.com, michael@paquier.xyz, zyu@yugabyte.com, amit.kapila16@gmail.com, REMI.DUVAL@cheops.fr, pgsql-hackers@lists.postgresql.org
  Subject: Re: proposal: schema variables
  In-Reply-To: <bdeb7611c6dbf22226c302bcc01d178b@xs4all.nl>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox