Обсуждение: Fix errcontext() function
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
Вложения
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
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
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
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. --
On 12.11.2012 17:52, Alvaro Herrera wrote: > Hopefully you noticed that contrib is broken. Oops.. fixed. - Heikki