On Sun, Jan 12, 2014 at 06:38:04AM +0100, Pavel Stehule wrote:
>
>
>
> 2014/1/12 Bruce Momjian <[email protected]>
>
> On Sat, Jan 11, 2014 at 10:06:27PM +0100, Pavel Stehule wrote:
> >
> >
> >
> > 2014/1/11 Tom Lane <[email protected]>
> >
> > Bruce Momjian <[email protected]> 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 <[email protected]> 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 ([email protected])
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-docs