Jag antar att du vill flytta din where document_id=1 till den nedre delen av frågan.
Var dock försiktig med att göra det, eftersom en rekursiv fråga inte injicerar begränsningen i with
påstående. Med andra ord kommer den faktiskt att genomsöka hela din tabell, bygga rekursivt alla möjligheter och filtrera bort de du behöver.
Du kommer att ha det bättre med en sql-funktion i praktiken, det vill säga något sånt här:
create or replace function gen_links(int) returns table (doc_id int, doc_url text) as $$
WITH RECURSIVE generate_links(document_id,url_id) as(
select document_id,url_id from document_urls where document_id=$1
UNION ALL
select du.document_id,du.url_id from generate_links gl,document_urls du
where gl.url_id=du.url_id
)
SELECT * FROM generate_links GROUP BY url_id,document_id;
$$ language sql stable;