Re: bugfix - plpgsql - statement counter is incremented 2x for FOR stmt

2021-02-02 Thread Pavel Stehule
Ășt 2. 2. 2021 v 20:36 odesĂ­latel Tom Lane  napsal:

> Pavel Stehule  writes:
> > When I fixed one plpgsql_check issue, I found another plpgsql issue. Now
> we
> > have field nstatements that hold a number of plpgsql statements in
> > function. Unfortunately I made an error when I wrote this functionality
> and
> > for FOR statements, this counter is incremented 2x. Higher number than a
> > real number is better than a lesser number, but it can be a source of
> > problems too (inside plpgsql_check I iterate over 0 .. nstatements
> stmtid,
> > and due this bug I had a problem with missing statements).
>
> > Attached patch is pretty simple:
>
> Right, done.
>

Thank you for commit

Regards

Pavel


> regards, tom lane
>


Re: bugfix - plpgsql - statement counter is incremented 2x for FOR stmt

2021-02-02 Thread Tom Lane
Pavel Stehule  writes:
> When I fixed one plpgsql_check issue, I found another plpgsql issue. Now we
> have field nstatements that hold a number of plpgsql statements in
> function. Unfortunately I made an error when I wrote this functionality and
> for FOR statements, this counter is incremented 2x. Higher number than a
> real number is better than a lesser number, but it can be a source of
> problems too (inside plpgsql_check I iterate over 0 .. nstatements stmtid,
> and due this bug I had a problem with missing statements).

> Attached patch is pretty simple:

Right, done.

regards, tom lane




bugfix - plpgsql - statement counter is incremented 2x for FOR stmt

2021-02-02 Thread Pavel Stehule
Hi

When I fixed one plpgsql_check issue, I found another plpgsql issue. Now we
have field nstatements that hold a number of plpgsql statements in
function. Unfortunately I made an error when I wrote this functionality and
for FOR statements, this counter is incremented 2x. Higher number than a
real number is better than a lesser number, but it can be a source of
problems too (inside plpgsql_check I iterate over 0 .. nstatements stmtid,
and due this bug I had a problem with missing statements).

Attached patch is pretty simple:

Regards

Pavel
diff --git a/src/pl/plpgsql/src/pl_gram.y b/src/pl/plpgsql/src/pl_gram.y
index abf196d4be..34e0520719 100644
--- a/src/pl/plpgsql/src/pl_gram.y
+++ b/src/pl/plpgsql/src/pl_gram.y
@@ -1341,7 +1341,6 @@ stmt_for		: opt_loop_label K_FOR for_control loop_body
 
 			new = (PLpgSQL_stmt_fori *) $3;
 			new->lineno   = plpgsql_location_to_lineno(@2);
-			new->stmtid	  = ++plpgsql_curr_compile->nstatements;
 			new->label	  = $1;
 			new->body	  = $4.stmts;
 			$$ = (PLpgSQL_stmt *) new;
@@ -1356,7 +1355,6 @@ stmt_for		: opt_loop_label K_FOR for_control loop_body
 			/* forq is the common supertype of all three */
 			new = (PLpgSQL_stmt_forq *) $3;
 			new->lineno   = plpgsql_location_to_lineno(@2);
-			new->stmtid	  = ++plpgsql_curr_compile->nstatements;
 			new->label	  = $1;
 			new->body	  = $4.stmts;
 			$$ = (PLpgSQL_stmt *) new;