Re: Problem with array subscripts in plpgsql trigger function - Mailing list pgsql-sql

From Erik Jones
Subject Re: Problem with array subscripts in plpgsql trigger function
Date
Msg-id 44AC00AD.6080603@myemma.com
Whole thread Raw
In response to Re: Problem with array subscripts in plpgsql trigger function  ("Aaron Bono" <postgresql@aranya.com>)
List pgsql-sql
Aaron Bono wrote:
> On 7/5/06, *Erik Jones* <erik@myemma.com <mailto:erik@myemma.com>> wrote:
>
>     Aaron Bono wrote:
>     > On 7/5/06, *Erik Jones* <erik@myemma.com
>     <mailto:erik@myemma.com> <mailto:erik@myemma.com
>     <mailto:erik@myemma.com>>> wrote:
>     >
>     >     Ok, I have a trigger set up on the following (stripped down)
>     table:
>     >
>     >     CREATE TABLE members (
>     >     member_id   bigint,
>     >     member_status_id   smallint,
>     >     member_is_deleted    boolean
>     >     );
>     >
>     >     Here's a shortened version of the trigger function:
>     >
>     >     CREATE OR REPLACE FUNCTION update_member() RETURNS TRIGGER
>     AS $um$
>     >     DECLARE
>     >         status_deltas integer[];
>     >     BEGIN
>     >         IF(NEW.member_status_id != OLD.member_status_id AND
>     >     NEW.member_is_deleted IS NOT TRUE) THEN
>     >            status_deltas[NEW.member_status_id] := 1;
>     >            status_deltas[OLD.member_status_id] := -1;
>     >         END IF;
>     >         /*and after a couple more such conditional assignments I
>     use the
>     >     values in status_deltas to update another table holding status
>     >     totals here*/
>     >     END;
>     >     $um$ LANGUAGE plpgsql;
>     >
>     >     on the two lines that access set array values I'm getting the
>     >     following
>     >     error:
>     >
>     >     ERROR:  invalid array subscripts
>     >
>     >     What gives?
>     >
>     >
>     >
>     > What values are being used for member_status_id?
>     >
>     1,  2, and 3 
>
>
> I did some digging through the documentation and cannot find any 
> examples of using arrays like this.  Do you have to initialize the 
> array before you use it?
>
> Does anyone know where to look for informaiton about using arrays in 
> stored procedures?
>
> -Aaron
>
Ok, that was apparently it.  I found <a 
href="http://archives.postgresql.org/pgsql-general/2005-02/msg01270.php">this</a> 
thread in the archive which indicated to me that without first 
initializing the array the bounds weren't set and thus a subscript error 
if each new index isn't sequential.

-- 
erik jones <erik@myemma.com>
software development
emma(r)



pgsql-sql by date:

Previous
From: "Keith Worthington"
Date:
Subject: Re: "CASE" is not a variable
Next
From: Davi Leal
Date:
Subject: Re: Foreign Key: what value? -- currval()