Thread: Fix errcontext() function

Fix errcontext() function

From
Chen Huajun
Date:
Hello,

I am sending patch for errcontext() function.

I use procedural languages to do some operation, but when error occurs
,the CONTEXT error messages from procedural languages doesn't display in
local language.

for example:
--------------------------------------------------------
postgres=# CREATE OR REPLACE FUNCTION logfunc3 (logtxt text) RETURNS
timestamp AS $$
postgres$# BEGIN
postgres$# select * from db;
postgres$# RETURN 'now';
postgres$# END;
postgres$# $$ LANGUAGE plpgsql;
CREATE FUNCTION
postgres=# select logfunc3('test');
ERROR: リレーション"db"は存在しません
行 1: select * from db
QUERY: select * from db
CONTEXT: PL/pgSQL function "logfunc3" line 3 at SQL ステートメント
--------------------------------------------------------
but,“CONTEXT:  PL/pgSQL 関数 "logfunc3" の 3 行目の型 SQL ステートメント” is my expected.

There is the same problem in pl/perl and pl/python .

After checking and debuging the source code ,I found the reason.

The reason is that domian setted is wrong. For PL/pgSQL, domain "pgsql" should be setted, but domain setted is
"postgres". 

So  I considered to fix the bug by updating errcontext() funtion.

The patched portion is at src/include/utils/elog.h and
src/backend/utils/error/elog.c

I invite any ideas how to improve this patch.


Best Regards

Huajun Chen


Attachment

Re: Fix errcontext() function

From
Heikki Linnakangas
Date:
On 08.11.2012 07:59, Chen Huajun wrote:
> I am sending patch for errcontext() function.
>
> I use procedural languages to do some operation, but when error occurs
> ,the CONTEXT error messages from procedural languages doesn't display in
> local language.
>
> for example:
> --------------------------------------------------------
> postgres=# CREATE OR REPLACE FUNCTION logfunc3 (logtxt text) RETURNS
> timestamp AS $$
> postgres$# BEGIN
> postgres$# select * from db;
> postgres$# RETURN 'now';
> postgres$# END;
> postgres$# $$ LANGUAGE plpgsql;
> CREATE FUNCTION
> postgres=# select logfunc3('test');
> ERROR: リレーション"db"は存在しません
> 行 1: select * from db
> QUERY: select * from db
> CONTEXT: PL/pgSQL function "logfunc3" line 3 at SQL ステートメント
> --------------------------------------------------------
> but,“CONTEXT:  PL/pgSQL 関数 "logfunc3" の 3 行目の型 SQL ステートメント” is my expected.
>
> There is the same problem in pl/perl and pl/python .
>
> After checking and debuging the source code ,I found the reason.
>
> The reason is that domian setted is wrong. For PL/pgSQL, domain "pgsql" should be setted, but domain setted is
"postgres". 
>
> So  I considered to fix the bug by updating errcontext() funtion.

Unfortunately not all compilers support varargs macros. I bumped into
this in February, see
http://archives.postgresql.org/message-id/4F3B72E0.8040801@enterprisedb.com.
My last attempt to fix this was at
http://archives.postgresql.org/pgsql-hackers/2012-04/msg00812.php. That
patch is probably good to go, I just got busy with other things and
forgot about it back then. Can you take a look at that patch and see if
I missed anything, please?

- Heikki



Re: Fix errcontext() function

From
Chen Huajun
Date:
Heikki

> Unfortunately not all compilers support varargs macros. I bumped into this in February, see
http://archives.postgresql.org/message-id/4F3B72E0.8040801@enterprisedb.com.My last attempt to fix this was
 
> at http://archives.postgresql.org/pgsql-hackers/2012-04/msg00812.php. That patch is probably good to go, I just got
busywith other things and forgot about it back then. Can you take a look at that
 
> patch and see if I missed anything, please?
>
> - Heikki
>
>

I think you are right,although the number of changed place is a a little bit large.
Thanks for your answer!

Chen Huajun






Re: Fix errcontext() function

From
Heikki Linnakangas
Date:
On 10.11.2012 11:46, Chen Huajun wrote:
>> Unfortunately not all compilers support varargs macros. I bumped into
>> this in February, see
>> http://archives.postgresql.org/message-id/4F3B72E0.8040801@enterprisedb.com.
>> My last attempt to fix this was
>> at http://archives.postgresql.org/pgsql-hackers/2012-04/msg00812.php.
>> That patch is probably good to go, I just got busy with other things
>> and forgot about it back then. Can you take a look at that
>> patch and see if I missed anything, please?
>
> I think you are right,although the number of changed place is a a little
> bit large.
> Thanks for your answer!

Ok, I've committed this patch now, it will be fixed in 9.3. Thanks for 
reminding me about this.

- Heikki



Re: Fix errcontext() function

From
Alvaro Herrera
Date:
Heikki Linnakangas wrote:
> On 10.11.2012 11:46, Chen Huajun wrote:
> >>Unfortunately not all compilers support varargs macros. I bumped into
> >>this in February, see
> >>http://archives.postgresql.org/message-id/4F3B72E0.8040801@enterprisedb.com.
> >>My last attempt to fix this was
> >>at http://archives.postgresql.org/pgsql-hackers/2012-04/msg00812.php.
> >>That patch is probably good to go, I just got busy with other things
> >>and forgot about it back then. Can you take a look at that
> >>patch and see if I missed anything, please?
> >
> >I think you are right,although the number of changed place is a a little
> >bit large.
> >Thanks for your answer!
> 
> Ok, I've committed this patch now, it will be fixed in 9.3. Thanks
> for reminding me about this.

Hopefully you noticed that contrib is broken.

-- 



Re: Fix errcontext() function

From
Heikki Linnakangas
Date:
On 12.11.2012 17:52, Alvaro Herrera wrote:
> Hopefully you noticed that contrib is broken.

Oops.. fixed.

- Heikki