begin
-- TODO improve this regular expression
- NEW.expires = regexp_replace(header_value(header, 'Expires'),E'\\([^\\)]*\\)', ' ')::timestamptz;
+ NEW.expires = regexp_replace(header_value(NEW.header, 'Expires'),E'\\([^\\)]*\\)', ' ')::timestamptz;
exception
when OTHERS then NEW.expires = NULL;
end;
+ -- TODO if date is null?
+ begin
+ -- TODO improve this regular expression
+ NEW.date = regexp_replace(header_value(NEW.header, 'Date'),E'\\([^\\)]*\\)', ' ')::timestamptz;
+ exception
+ when OTHERS then NEW.date = NULL;
+ end;
+
if NEW.header is null then
raise exception 'null header b';
end if;
declare
hiwater integer;
begin
- select high + 1 from newsgroups where newsgroup = NEW.newsgroup
- for update into hiwater;
+ update newsgroups set high = high + 1
+ where newsgroup = NEW.newsgroup returning high into hiwater;
+
NEW.number := hiwater;
- update newsgroups set high = high + 1 where newsgroup = NEW.newsgroup;
return NEW;
end;
$$ language 'plpgsql';
+
create trigger highwater before insert on xpost
for each row execute procedure xpost_trigger();