Thread

  1. Fix errcontext() function

    Chen Huajun <chenhj@cn.fujitsu.com> — 2012-11-08T05:59:58Z

    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
    
    
  2. Re: Fix errcontext() function

    Heikki Linnakangas <hlinnakangas@vmware.com> — 2012-11-08T08:07:14Z

    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
    
    
    
  3. Re: Fix errcontext() function

    Chen Huajun <chenhj@cn.fujitsu.com> — 2012-11-10T09:46:24Z

    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 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
    >
    >
    
    I think you are right,although the number of changed place is a a little bit large.
    Thanks for your answer!
    
    Chen Huajun
    
    
    
    
    
    
  4. Re: Fix errcontext() function

    Heikki Linnakangas <hlinnakangas@vmware.com> — 2012-11-12T15:21:12Z

    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
    
    
    
  5. Re: Fix errcontext() function

    Alvaro Herrera <alvherre@2ndquadrant.com> — 2012-11-12T15:52:59Z

    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.
    
    -- 
    
    
    
  6. Re: Fix errcontext() function

    Heikki Linnakangas <hlinnakangas@vmware.com> — 2012-11-12T16:33:13Z

    On 12.11.2012 17:52, Alvaro Herrera wrote:
    > Hopefully you noticed that contrib is broken.
    
    Oops.. fixed.
    
    - Heikki