X-Git-Url: https://pd.if.org/git/?p=newsd;a=blobdiff_plain;f=schema.sql;h=769f0e5e23ad44cdbd6a89196dcde43a99a4956c;hp=826bc855f545cb53520425af0332c7dceff634d9;hb=ebc3461ce2a71fe7fafff83726747ddea712bd31;hpb=d1578c89c1be4a044e63c3413bac3c14de66094b diff --git a/schema.sql b/schema.sql index 826bc85..769f0e5 100644 --- a/schema.sql +++ b/schema.sql @@ -330,11 +330,19 @@ begin 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; @@ -363,13 +371,14 @@ create or replace function xpost_trigger() returns trigger as $$ 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();