CREATE OR REPLACE FUNCTION posts_getlist(user_id int8, posts_perload int, offset_n int,post_category VARCHAR,list_show_mode VARCHAR) RETURNS SETOF posts_u1 AS $$
DECLARE
result posts_u1%rowtype;
r RECORD;
c RECORD;
BEGIN
FOR c IN EXECUTE ‘SELECT post_parent_id,post_parent_k,post_id FROM posts_u’ || user_id || ’ WHERE post_category = ”’ || post_category || ”’ ORDER BY post_id DESC OFFSET ’ || offset_n LOOP
EXECUTE ‘SELECT * FROM posts_u’ || c.post_parent_id || ’ WHERE post_parent_k = ’ || c.post_parent_k || ’ AND post_reposter_id = 0 LIMIT 1’ INTO r;
IF (r.post_id<>0) THEN BEGIN
RETURN NEXT r;
posts_perload:=posts_perload-1;
IF (posts_perload=0) THEN EXIT;END IF;
END; ELSE BEGIN
EXECUTE ‘DELETE FROM posts_u’ || user_id || ’ WHERE post_id=’ || c.post_id;
END;
END IF;
END LOOP;
END;
$$ LANGUAGE plpgsql;
SELECT * FROM posts_getlist(2,10,0,’music’,”);