Difference in postgres9.0.4 and postgres9.1beta1 when displaying error lines in functions with comments

Поиск
Список
Период
Сортировка
От Abel Abraham Camarillo Ojeda
Тема Difference in postgres9.0.4 and postgres9.1beta1 when displaying error lines in functions with comments
Дата
Msg-id BANLkTinsH_+nuy9kbfca5u1-2XTWpbE_zw@mail.gmail.com
обсуждение исходный текст
Ответы Re: Difference in postgres9.0.4 and postgres9.1beta1 when displaying error lines in functions with comments  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-hackers
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.


В списке pgsql-hackers по дате отправления:

Предыдущее
От: Tom Lane
Дата:
Сообщение: Re: [v9.2] Start new timeline for PITR
Следующее
От: Tom Lane
Дата:
Сообщение: Re: Difference in postgres9.0.4 and postgres9.1beta1 when displaying error lines in functions with comments