Stored procedure failure - Mailing list pgsql-general

From Michal Hlavac
Subject Stored procedure failure
Date
Msg-id 412DB04A.4010805@medium13.sk
Whole thread Raw
Responses Re: Stored procedure failure
Re: Stored procedure failure
Re: Stored procedure failure
List pgsql-general
hello, I have interesting problem...

I have stored procedure, which works good, but only if input is "correct".
Correct input is, when $1 is id, which exists in table...
If I put non exists id, database fall down and restart with this error:
server closed the connection unexpectedly
         This probably means the server terminated abnormally
         before or while processing the request.
The connection to the server was lost. Attempting reset: Failed.

I think, that problem is in line:
FOR tmp_row IN SELECT v_name FROM c_part_cat WHERE v_path @> my_path
ORDER BY v_path LOOP
because without them it works well...

Version: 7.4.5 and 7.4.3 (both versions have this problem)

thanx, hlavki

source:

/*==============================================================*/
/* Table: c_part_cat                                            */
/*==============================================================*/
create table c_part_cat (
i_part_cat_id        integer default nextval('c_part_cat_seq') not null,
c_code               varchar(32)          not null,
v_name               varchar(128)         null,
v_path               ltree                not null,
i_parent_id          int4                 null,
constraint pk_c_part_cat primary key (i_part_cat_id)
);

/*==============================================================*/
/* Index: index_13                                              */
/*==============================================================*/
create  index index_13 on c_part_cat (
i_parent_id
);

/*==============================================================*/
/* Index: index_22                                              */
/*==============================================================*/
create unique index index_22 on c_part_cat (
c_code
);

/*==============================================================*/
/* Index: index_4                                               */
/*==============================================================*/
create  index index_4 on c_part_cat using gist (
v_path
);

alter table c_part_cat
    add constraint fk_c_part_cat_ref_c_part_cat foreign key (i_parent_id)
       references c_part_cat (i_part_cat_id)
       on delete restrict on update restrict;

CREATE OR REPLACE FUNCTION "public"."get_part_cat_path" (integer)
RETURNS text AS'
DECLARE
   my_path ltree;
   result text;
   tmp_row RECORD;
   first bool;
BEGIN
   SELECT v_path INTO my_path FROM c_part_cat WHERE i_part_cat_id = $1;
   result := ''''; first := true;
   FOR tmp_row IN SELECT v_name FROM c_part_cat WHERE v_path @> my_path
ORDER BY v_path LOOP
     IF first THEN
       result := tmp_row.v_name;
       first := false;
     ELSE
       result := tmp_row.v_name || ''->'' || result;
     END IF;
   END LOOP;
   RETURN result;
END;
'LANGUAGE 'plpgsql' STABLE CALLED ON NULL INPUT SECURITY INVOKER;



--

[ miso hlavac ][ hlavki@medium13.sk ][ http://www.medium13.sk ]
[ icq:94900232 ][ callto://hlavki ]

pgsql-general by date:

Previous
From: Greg Stark
Date:
Subject: Re: Alter field type?
Next
From: Bjørn T Johansen
Date:
Subject: Re: Alter field type?