On Sun, Jan 12, 2014 at 06:38:04AM +0100, Pavel Stehule wrote:
> 
> 
> 
> 2014/1/12 Bruce Momjian <br...@momjian.us>
> 
>     On Sat, Jan 11, 2014 at 10:06:27PM +0100, Pavel Stehule wrote:
>     >
>     >
>     >
>     > 2014/1/11 Tom Lane <t...@sss.pgh.pa.us>
>     >
>     >     Bruce Momjian <br...@momjian.us> writes:
>     >     > Oh, I think you are right.  I have reverted the patch.  Attached 
> is
>     >     > proposed documentation for '='.
>     >
>     >     Meh.  Variable initialization is only one of multiple cases
>     (assignment,
>     >     GET DIAGNOSTICS; maybe others, I've not examined the grammar).  
> Also,
>     >     if we do it like this, we're implying that both := and = are equally
>     >     preferred, which might not be the impression we want to leave.
>     >
>     >
>     > GET DIAGNOSTICS is defined by standard - and there "=" should be allowed
>     only -
>     > although we allow ":=" too. It is a embedded SQL statement - although it
>     is
>     > implemented as plpgsql statement.
> 
>     OK, docs updated for that.  I assume OPEN and FOR also can take := or =,
>     right?
> 
> 
> no, there are not used assign_operator
> 
> It is used only in DECLARE DEFAULT, ASSIGN and GET DIAGNOSTICS
>  

OK, patch updated and attached.

-- 
  Bruce Momjian  <br...@momjian.us>        http://momjian.us
  EnterpriseDB                             http://enterprisedb.com

  + Everyone has their own god. +
diff --git a/doc/src/sgml/plpgsql.sgml b/doc/src/sgml/plpgsql.sgml
new file mode 100644
index ca2c2b5..151fcb9
*** a/doc/src/sgml/plpgsql.sgml
--- b/doc/src/sgml/plpgsql.sgml
*************** arow RECORD;
*** 328,334 ****
      <para>
       The general syntax of a variable declaration is:
  <synopsis>
! <replaceable>name</replaceable> <optional> CONSTANT </optional> <replaceable>type</replaceable> <optional> COLLATE <replaceable>collation_name</replaceable> </optional> <optional> NOT NULL </optional> <optional> { DEFAULT | := } <replaceable>expression</replaceable> </optional>;
  </synopsis>
        The <literal>DEFAULT</> clause, if given, specifies the initial value assigned
        to the variable when the block is entered.  If the <literal>DEFAULT</> clause
--- 328,334 ----
      <para>
       The general syntax of a variable declaration is:
  <synopsis>
! <replaceable>name</replaceable> <optional> CONSTANT </optional> <replaceable>type</replaceable> <optional> COLLATE <replaceable>collation_name</replaceable> </optional> <optional> NOT NULL </optional> <optional> { DEFAULT | := | = } <replaceable>expression</replaceable> </optional>;
  </synopsis>
        The <literal>DEFAULT</> clause, if given, specifies the initial value assigned
        to the variable when the block is entered.  If the <literal>DEFAULT</> clause
*************** arow RECORD;
*** 343,348 ****
--- 343,349 ----
        is specified, an assignment of a null value results in a run-time
        error. All variables declared as <literal>NOT NULL</>
        must have a nonnull default value specified.
+       Equals (<literal>=</>) can be used instead of <literal>:=</>.
       </para>
  
       <para>
*************** PREPARE <replaceable>statement_name</>(i
*** 866,872 ****
       An assignment of a value to a <application>PL/pgSQL</application>
       variable is written as:
  <synopsis>
! <replaceable>variable</replaceable> := <replaceable>expression</replaceable>;
  </synopsis>
       As explained previously, the expression in such a statement is evaluated
       by means of an SQL <command>SELECT</> command sent to the main
--- 867,873 ----
       An assignment of a value to a <application>PL/pgSQL</application>
       variable is written as:
  <synopsis>
! <replaceable>variable</replaceable> { := | = } <replaceable>expression</replaceable>;
  </synopsis>
       As explained previously, the expression in such a statement is evaluated
       by means of an SQL <command>SELECT</> command sent to the main
*************** PREPARE <replaceable>statement_name</>(i
*** 874,880 ****
       a row value, if the variable is a row or record variable).  The target
       variable can be a simple variable (optionally qualified with a block
       name), a field of a row or record variable, or an element of an array
!      that is a simple variable or field.
      </para>
  
      <para>
--- 875,882 ----
       a row value, if the variable is a row or record variable).  The target
       variable can be a simple variable (optionally qualified with a block
       name), a field of a row or record variable, or an element of an array
!      that is a simple variable or field.  Equals (<literal>=</>) can be
!      used instead of <literal>:=</>.
      </para>
  
      <para>
*************** EXECUTE format('UPDATE tbl SET %I = $1 W
*** 1411,1417 ****
       command, which has the form:
  
  <synopsis>
! GET <optional> CURRENT </optional> DIAGNOSTICS <replaceable>variable</replaceable> = <replaceable>item</replaceable> <optional> , ... </optional>;
  </synopsis>
  
       This command allows retrieval of system status indicators.  Each
--- 1413,1419 ----
       command, which has the form:
  
  <synopsis>
! GET <optional> CURRENT </optional> DIAGNOSTICS <replaceable>variable</replaceable> { = | := } <replaceable>item</replaceable> <optional> , ... </optional>;
  </synopsis>
  
       This command allows retrieval of system status indicators.  Each
*************** SELECT merge_db(1, 'dennis');
*** 2672,2678 ****
       <command>GET STACKED DIAGNOSTICS</command> command, which has the form:
  
  <synopsis>
! GET STACKED DIAGNOSTICS <replaceable>variable</replaceable> = <replaceable>item</replaceable> <optional> , ... </optional>;
  </synopsis>
  
       Each <replaceable>item</replaceable> is a key word identifying a status
--- 2674,2680 ----
       <command>GET STACKED DIAGNOSTICS</command> command, which has the form:
  
  <synopsis>
! GET STACKED DIAGNOSTICS <replaceable>variable</replaceable> { = | := } <replaceable>item</replaceable> <optional> , ... </optional>;
  </synopsis>
  
       Each <replaceable>item</replaceable> is a key word identifying a status
*************** END;
*** 2776,2782 ****
     <para>
  
  <synopsis>
! GET <optional> CURRENT </optional> DIAGNOSTICS <replaceable>variable</replaceable> = <replaceable>PG_CONTEXT</replaceable> <optional> , ... </optional>;
  </synopsis>
  
  
--- 2778,2784 ----
     <para>
  
  <synopsis>
! GET <optional> CURRENT </optional> DIAGNOSTICS <replaceable>variable</replaceable> { = | := } <replaceable>PG_CONTEXT</replaceable> <optional> , ... </optional>;
  </synopsis>
  
  
diff --git a/src/pl/plpgsql/src/pl_gram.y b/src/pl/plpgsql/src/pl_gram.y
new file mode 100644
index 3fd6655..03a132d
*** a/src/pl/plpgsql/src/pl_gram.y
--- b/src/pl/plpgsql/src/pl_gram.y
*************** decl_defkey		: assign_operator
*** 796,802 ****
  				| K_DEFAULT
  				;
  
! assign_operator	: '='	/* not documented because it might be removed someday */
  				| COLON_EQUALS
  				;
  
--- 796,802 ----
  				| K_DEFAULT
  				;
  
! assign_operator	: '='	/* alternative to := */
  				| COLON_EQUALS
  				;
  
-- 
Sent via pgsql-docs mailing list (pgsql-docs@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-docs

Reply via email to