mail=> \d messagedata Table "public.messagedata" Column | Type | Modifiers ----------------+-----------------------------+------------------------------------------------- id | bigint | default nextval('messagedata_id_seq'::regclass) mailinglist_id | bigint | messageid | character varying | subject | character varying | sender | character varying | date | timestamp without time zone | subject_indexx | tsvector | Indexes: "messagedata_idx_date" btree (date) "messagedata_idx_date_mailinglist" btree (date, mailinglist_id) "messagedata_idx_id" btree (id) "messagedata_idx_mailinglist" btree (mailinglist_id) "messagedata_idx_messageid" btree (messageid) "messagedata_subject_idxx" gin (subject_indexx) Triggers: messagedata_insert_trigger AFTER INSERT ON messagedata FOR EACH STATEMENT EXECUTE PROCEDURE messagedata_trigger() mail=> Create or replace FUNCTION messagedata_trigger() RETURNS trigger AS $$ begin new.subject_indexx := setweight(to_tsvector('pg.catalog.english', coalesce(new.subject,'')), 'A'); return new; end $$ LANGUAGE plpgsql; mail=> insert into messagedata (subject) values('Foo'); ERROR: record "new" is not assigned yet DETAIL: The tuple structure of a not-yet-assigned record is indeterminate. CONTEXT: PL/pgSQL function "messagedata_trigger" line 2 at assignment