Обсуждение: Bug #608: cache lookup failed

Поиск
Список
Период
Сортировка

Bug #608: cache lookup failed

От
pgsql-bugs@postgresql.org
Дата:
Laurent Faillie (l_faillie@yahoo.com) reports a bug with a severity of 2
The lower the number the more severe it is.

Short Description
cache lookup failed

Long Description
Hi all,

I have just upgraded my 1.7.3 database to 7.2, following documentation's instruction (pg_dumpall + psql < dumpfile).

All is working Ok but a call to an PL/SQL function which fails w/ the following code.

ERROR:  fmgr_info: function 16594: cache lookup failed

I have tryed to drop and recreate this function but it fails again.

I need some help because this problem blocks all my production as most of my application depend on it :-(

I'm working on an HP-UX 11.0 box and postgresql was compiled using GCC 
2.95.3

Thank for your help

- Laurent

Sample Code
CREATE TABLE disk_toppage_stats (
    machine    TEXT,
    jour    DATE,
    pourcent    SMALLINT DEFAULT 0,
    level    SMALLINT DEFAULT    0
);


CREATE FUNCTION upd_disk_toppage_stats() RETURNS text AS '
DECLARE
    res RECORD;
    res2 RECORD;
    res_lmt RECORD;

    nv_vert    CONSTANT SMALLINT := 0;
    nv_jaune CONSTANT SMALLINT := 1;
    nv_rouge CONSTANT SMALLINT := 2;

        -- Default value for levels
    def_lmt_jaune    CONSTANT SMALLINT := 80;
    def_lmt_rouge    CONSTANT SMALLINT := 90;

    lmt_jaune    SMALLINT;
    lmt_rouge    SMALLINT;
    level    SMALLINT;
BEGIN

    FOR res IN select * from disk_toppage_stats LOOP
--        RAISE NOTICE ''machine = %, jour = %'',res.machine,res.jour;

--
--    Update the maximum percentage for each machine.
--
    
        EXECUTE ''UPDATE disk_toppage_stats SET pourcent=(select max(pourcent) FROM disk_space WHERE machine='' ||
quote_literal(res.machine)|| '' AND jour='' || quote_literal(res.jour) || '') WHERE machine='' ||
quote_literal(res.machine);


-- RAISE NOTICE ''------ machine=% -----'', res.machine;
        level := nv_vert;
        
        FOR res2 IN 
            select * from disk_space 
            where machine=res.machine
            and jour=(select jour from disk_toppage_stats where machine=res.machine)
        LOOP
-- RAISE NOTICE ''fs = %, prc = %'',res2.fs,res2.pourcent;

            lmt_jaune := def_lmt_jaune;
            lmt_rouge := def_lmt_rouge;
            
            SELECT INTO res_lmt * FROM disk_limit
                WHERE machine=res.machine AND fs=res2.fs;
            
            IF FOUND THEN
-- RAISE NOTICE ''****** TROUVE ! ******'';
                lmt_jaune := res_lmt.limite_jaune;
                lmt_rouge := res_lmt.limite_rouge;
            END IF;
            
            IF level = nv_vert THEN
                IF res2.pourcent >= lmt_jaune THEN
                    level := nv_jaune;
                END IF;
            END IF;
            
            IF res2.pourcent >= lmt_rouge THEN
                level := nv_rouge;
                EXIT;
            END IF;
        END LOOP;

        EXECUTE ''UPDATE disk_toppage_stats SET level='' || quote_literal(level) || '' WHERE machine='' ||
quote_literal(res.machine);
--RAISE NOTICE ''on est sortie avec un niveau %'',level;
    END LOOP;

    RETURN ''ok'';
END;

' LANGUAGE 'plpgsql';


No file was uploaded with this report

Re: Bug #608: cache lookup failed

От
Tom Lane
Дата:
pgsql-bugs@postgresql.org writes:
> All is working Ok but a call to an PL/SQL function which fails w/ the following code.

> ERROR:  fmgr_info: function 16594: cache lookup failed

Most likely this means something happened to the call handler function
for plpgsql.  Look in pg_language to see the "lanplcallfoid" value for
plpgsql; is it 16594?  Do you have an entry in pg_proc for
"plpgsql_call_handler", and if so what does it look like?

            regards, tom lane

Re: Bug #608: cache lookup failed

От
Juliano Ignacio
Дата:
I don't know about details, but in the 7.2 PostgreSQL
documentation, at Schema Manipulation topic, says:

New CREATE OR REPLACE FUNCTIONS to alter existing
function (preserving the OID) (by Gavin Sherry)

I think that you need to use this new resource.

Juliano S. Ignacio
jsignacio@hotmail.com



--- pgsql-bugs@postgresql.org wrote:
> Laurent Faillie (l_faillie@yahoo.com) reports a bug
> with a severity of 2
> The lower the number the more severe it is.
>
> Short Description
> cache lookup failed
>


__________________________________________________
Do You Yahoo!?
Try FREE Yahoo! Mail - the world's greatest free email!
http://mail.yahoo.com/

Re: Bug #608: cache lookup failed

От
Laurent FAILLIE
Дата:
Hi all,

Oups, I forgot to put the ML in copy of my reply :-(

[...]

> > ERROR:  fmgr_info: function 16594: cache lookup
> failed
> Most likely this means something happened to the
> call handler function
> for plpgsql.  Look in pg_language to see the
> "lanplcallfoid" value for
> plpgsql; is it 16594?

Yes :

scheduling=# select lanplcallfoid from pg_language
where lanname = 'plpgsql';lanplcallfoid
---------------        16594
(1 row)

> Do you have an entry in
> pg_proc for
> "plpgsql_call_handler", and if so what does it look
> like?
scheduling=# select * from pg_proc where
proname='plpgsql_call_handler';      proname        | proowner | prolang | proisinh
| proistrusted | proiscachable | proisstrict |
pronargs | proretset | prorettype | proargtypes |
probyte_pct | pro
perbyte_cpu | propercall_cpu | prooutin_ratio |
prosrc        |             probin

----------------------+----------+---------+----------+--------------+---------------+-------------+----------+-----------+------------+-------------+-------------+----

------------+----------------+----------------+----------------------+---------------------------------plpgsql_call_handler
|       1 |      13 | f        
| t            | f             | f           |
0 | f         |          0 |             |         100
|         0 |              0 |            100 |
plpgsql_call_handler | /usr/local/pgsql/lib/plpgsql.sl

Please note I have remove the old binary and stop all
processes using it (Apache/PHP) before doing the
installation of the new release.

>             regards, tom lane

Regards, Laurent

PS: Sorry Tom for my duplicate sending


=====
The misspelling master is on the Web.  _________    100 % Dictionnary Free ! /        /(/  Dico  / /    Pleins d'autres
fautessur 
/________/ /    http://go.to/destroyedlolo
(#######( /
Quoi, des fautes d'orthographe! Pas possible ;-D.

___________________________________________________________
Do You Yahoo!? -- Une adresse @yahoo.fr gratuite et en français !
Yahoo! Mail : http://fr.mail.yahoo.com