diff --git a/doc/src/sgml/plpgsql.sgml b/doc/src/sgml/plpgsql.sgml new file mode 100644 index ca2c2b5..b937580 *** a/doc/src/sgml/plpgsql.sgml --- b/doc/src/sgml/plpgsql.sgml *************** arow RECORD; *** 328,334 **** The general syntax of a variable declaration is: ! name CONSTANT type COLLATE collation_name NOT NULL { DEFAULT | := } expression ; The DEFAULT clause, if given, specifies the initial value assigned to the variable when the block is entered. If the DEFAULT clause --- 328,334 ---- The general syntax of a variable declaration is: ! name CONSTANT type COLLATE collation_name NOT NULL { DEFAULT | := | = } expression ; The DEFAULT clause, if given, specifies the initial value assigned to the variable when the block is entered. If the 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 NOT NULL must have a nonnull default value specified. + Equals (=) can be used instead of :=. *************** PREPARE statement_name(i *** 866,872 **** An assignment of a value to a PL/pgSQL variable is written as: ! variable := expression; As explained previously, the expression in such a statement is evaluated by means of an SQL SELECT command sent to the main --- 867,873 ---- An assignment of a value to a PL/pgSQL variable is written as: ! variable { := | = } expression; As explained previously, the expression in such a statement is evaluated by means of an SQL SELECT command sent to the main *************** PREPARE 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. --- 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 (=) can be ! used instead of :=. *************** EXECUTE format('UPDATE tbl SET %I = $1 W *** 1411,1417 **** command, which has the form: ! GET CURRENT DIAGNOSTICS variable = item , ... ; This command allows retrieval of system status indicators. Each --- 1413,1419 ---- command, which has the form: ! GET CURRENT DIAGNOSTICS variable { = | := } item , ... ; This command allows retrieval of system status indicators. Each *************** GET CURRENT DIAGN *** 1425,1430 **** --- 1427,1434 ---- SQL command. Note that RESULT_OID is only useful after an INSERT command into a table containing OIDs. + Equals (:=) can be used instead of = for + GET DIAGNOSTICS. *************** SELECT merge_db(1, 'dennis'); *** 2672,2678 **** GET STACKED DIAGNOSTICS command, which has the form: ! GET STACKED DIAGNOSTICS variable = item , ... ; Each item is a key word identifying a status --- 2676,2682 ---- GET STACKED DIAGNOSTICS command, which has the form: ! GET STACKED DIAGNOSTICS variable { = | := } item , ... ; Each item is a key word identifying a status *************** END; *** 2776,2782 **** ! GET CURRENT DIAGNOSTICS variable = PG_CONTEXT , ... ; --- 2780,2786 ---- ! GET CURRENT DIAGNOSTICS variable { = | := } PG_CONTEXT , ... ; diff --git a/src/pl/plpgsql/src/pl_gram.y b/src/pl/plpgsql/src/pl_gram.y new file mode 100644 index 3fd6655..9284cf3 *** 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,807 ---- | K_DEFAULT ; ! /* ! * Ada-based PL/SQL uses := for assignment and variable defaults, while ! * standards-based PSM uses equals for these cases and for GET DIAGNOSTICS, ! * so we support both. FOR and OPEN only support :=. ! */ ! assign_operator : '=' | COLON_EQUALS ;