Thread

  1. pg_dump bug - problems along the way

    Oliver Elphick <olly@lfix.co.uk> — 1998-11-20T23:30:29Z

    Still trying to fix the bug with inherited check constraints...
    
    I have tried to create a min(oid) aggregate, but when I use it, I get
    the message `ERROR:  fmgr_info: function 108994: cache lookup failed'.
    
    What is the problem, please?
    
    I created it thus:
    
    create function oid4smaller (oid, oid) returns oid as
                    '/home/olly/cprogs/oidcompare.so' language 'c';
    
    create aggregate min (basetype = oid, sfunc1 = oid4smaller,
                          stype1 = oid, stype2 = oid);
    
    
    The C file is compiled and linked thus (for Linux x86):
    
      $ gcc -o oidcompare.o -c -I/usr/include/postgresql oidcompare.c
      $ gcc -shared -o oidcompare.so oidcompare.o
    
    and it says:
    #include <postgresql/postgres.h>
    
    Oid oid4smaller(Oid o1, Oid o2) {
            return (o1 < o2 ? o1 : o2);
    }
    
    Oid oid4larger(Oid o1, Oid o2) {
            return (o1 > o2 ? o1 : o2);
    }
    
    
    
    -- 
    Oliver Elphick                                Oliver.Elphick@lfix.co.uk
    Isle of Wight                              http://www.lfix.co.uk/oliver
                   PGP key from public servers; key ID 32B8FAA1
                     ========================================
         "If my people, which are called by my name, shall 
          humble themselves, and pray, and seek my face, and 
          turn from their wicked ways; then will I hear from 
          heaven, and will forgive their sin, and will heal 
          their land."               II Chronicles 7:14 
    
    
    
    
  2. Re: [HACKERS] pg_dump bug - problems along the way

    jose' soares <sferac@bo.nettuno.it> — 1998-11-23T14:35:34Z

    Hello Oliver,
    
    sabato, 21 novembre 98, you wrote:
    
    OE> Still trying to fix the bug with inherited check constraints...
    
    OE> I have tried to create a min(oid) aggregate, but when I use it, I get
    OE> the message `ERROR:  fmgr_info: function 108994: cache lookup failed'.
    
    OE> What is the problem, please?
    
    OE> I created it thus:
    
    OE> create function oid4smaller (oid, oid) returns oid as
    OE>                 '/home/olly/cprogs/oidcompare.so' language 'c';
    
    OE> create aggregate min (basetype = oid, sfunc1 = oid4smaller,
    OE>                       stype1 = oid, stype2 = oid);
    
    Try this...it works...
    
    create function oid4smaller (oid, oid) returns oid as
    '
    begin
         if $1 > $2 then
            return $2;
         else
            return $1;
         end if;
     end;
    ' language 'plpgsql';
    
    create aggregate m (basetype = oid, sfunc1 = oid4smaller,
                          stype1 = oid, stype2 = oid);
    
    prova=> select oid from a;
       oid
    ------
    376064
    376065
    380064
    380065
    380066
    380067
    (6 rows)
    
    prova=> select min(oid) from a;
       min
    ------
    376064
    (1 row)
    
    
    -Jose'-