Thread: Difference in postgres9.0.4 and postgres9.1beta1 when displaying error lines in functions with comments
Difference in postgres9.0.4 and postgres9.1beta1 when displaying error lines in functions with comments
From
Abel Abraham Camarillo Ojeda
Date:
Postgres 9.0.4 and postgres9.1beta1 give different line of error numbers on functions that raise runtime errors (it seems). How to reproduce, given the next SQL file: $ cat /tmp/sql begin; CREATE FUNCTION pg_temp.commchecksql() returns boolean strict language plpgsql as $$ begin -- SQL comment perform 'aoeuaoeuaeou'::regclass; return true; end; $$; select pg_temp.commchecksql(); rollback; begin; CREATE FUNCTION pg_temp.commcheckC() returns boolean strict language plpgsql as $$ begin /* C-like comment */ perform 'aoeuaoeuaeou'::regclass; return true; end; $$; select pg_temp.commcheckC(); rollback; ------------------ If I run it on postgres9.0.4: $ psql -U postgres template1 -f/tmp/sql SET BEGIN CREATE FUNCTION psql:/tmp/sql:12: ERROR: relation "aoeuaoeuaeou" does not exist LINE 1: SELECT 'aoeuaoeuaeou'::regclass ^ QUERY: SELECT 'aoeuaoeuaeou'::regclass CONTEXT: PL/pgSQL function "commchecksql" line 4 at PERFORM ROLLBACK BEGIN CREATE FUNCTION psql:/tmp/sql:26: ERROR: relation "aoeuaoeuaeou" does not exist LINE 1: SELECT 'aoeuaoeuaeou'::regclass ^ QUERY: SELECT 'aoeuaoeuaeou'::regclass CONTEXT: PL/pgSQL function "commcheckc" line 4 at PERFORM ROLLBACK -------------------- On postgres9.1beta1: $ psql -U postgres template1 -f/tmp/sql SET BEGIN CREATE FUNCTION psql:/tmp/sql:12: ERROR: relation "aoeuaoeuaeou" does not exist LINE 1: SELECT 'aoeuaoeuaeou'::regclass ^ QUERY: SELECT 'aoeuaoeuaeou'::regclass CONTEXT: PL/pgSQL function "commchecksql" line 5 at PERFORM ROLLBACK BEGIN CREATE FUNCTION psql:/tmp/sql:26: ERROR: relation "aoeuaoeuaeou" does not exist LINE 1: SELECT 'aoeuaoeuaeou'::regclass ^ QUERY: SELECT 'aoeuaoeuaeou'::regclass CONTEXT: PL/pgSQL function "commcheckc" line 5 at PERFORM ROLLBACK -------------------- The line numbers of where the error is have changed: --- /tmp/out9.0.4 Thu Jun 9 20:47:45 2011 +++ /tmp/out9.1beta1 Thu Jun 9 20:49:02 2011 @@ -5,7 +5,7 @@LINE 1: SELECT 'aoeuaoeuaeou'::regclass ^QUERY: SELECT 'aoeuaoeuaeou'::regclass -CONTEXT: PL/pgSQL function "commchecksql" line 4 at PERFORM +CONTEXT: PL/pgSQL function "commchecksql" line 5 at PERFORMROLLBACKBEGINCREATE FUNCTION @@ -13,5 +13,5 @@LINE 1: SELECT 'aoeuaoeuaeou'::regclass ^QUERY: SELECT 'aoeuaoeuaeou'::regclass -CONTEXT: PL/pgSQL function "commcheckc" line 4 at PERFORM +CONTEXT: PL/pgSQL function "commcheckc" line 5 at PERFORMROLLBACK --------------------- I care about this because I have some custom regression tests that check the failing of functions coded like this... and they suddenly failed with that difference when I checked them against postgres9.0.4. Is this an intended behaviour? Thank you.
Re: Difference in postgres9.0.4 and postgres9.1beta1 when displaying error lines in functions with comments
From
Tom Lane
Date:
Abel Abraham Camarillo Ojeda <acamari@verlet.org> writes: > Postgres 9.0.4 and postgres9.1beta1 give different line of error numbers on > functions that raise runtime errors (it seems). This is not a bug. See the release notes: Adjust PL/pgSQL's error line numbering code to be consistentwith other PLs (Pavel Stehule) Previously, PL/pgSQL would ignore (not count) an empty line atthe start of the function body. Since this was inconsistentwithall other languages, the special case was removed. regards, tom lane
Re: Difference in postgres9.0.4 and postgres9.1beta1 when displaying error lines in functions with comments
From
Abel Abraham Camarillo Ojeda
Date:
Thanks... and sorry for sending it to hackers list... I had not read the bug reporting guides... nor the release notes... it seems. Again, thanks. On Thu, Jun 9, 2011 at 9:22 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote: > Abel Abraham Camarillo Ojeda <acamari@verlet.org> writes: >> Postgres 9.0.4 and postgres9.1beta1 give different line of error numbers on >> functions that raise runtime errors (it seems). > > This is not a bug. See the release notes: > > Adjust PL/pgSQL's error line numbering code to be consistent > with other PLs (Pavel Stehule) > > Previously, PL/pgSQL would ignore (not count) an empty line at > the start of the function body. Since this was inconsistent with > all other languages, the special case was removed. > > regards, tom lane >