From: | William Furnass <will(at)thearete(dot)co(dot)uk> |
---|---|
To: | pgsql-novice(at)postgresql(dot)org |
Subject: | Recursive queries for network traversal |
Date: | 2010-08-08 20:16:50 |
Message-ID: | AANLkTikROik6sm+t64ibpsN-2i6-OjLnT778u2GxDEvV@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-novice |
Hi,
I'm very new to PL/pgSQL and am having difficulty in mixing my
understanding of procedural languages and of set-based operations in
devising a recursive query for network traversal. The pseudocode for
what I wish to do looks like the following:
my_pipes = Pipes[]
func find_all_pipes_upstream(node n)
if is_inlet(nodename)
return Nil
else
for p in upstream_pipes:
if p in my_pipes:
return Nil
else
roi_pipes.append(p)
find_all_pipes_upstream(upstream_node(p))
I've already written the following functions in pure SQL
upstream_pipes(node_name varchar) RETURNS SETOF "Pipes"
upstream_node(pipe_name varchar) RETURNS "Node"
is_inlet(node_name) RETURNS boolean
but am struggling to figure out how to manage scoping and return types
when translating the above pseudocode to pgSQL. Has anyone any advise
as how best to go about this?
Thanks in advance.
Cheers,
Will
----
Will Furnass
MSc student (Environmental Management of Urban Land and Water)
University of Sheffield, UK
From | Date | Subject | |
---|---|---|---|
Next Message | William Furnass | 2010-08-08 22:52:41 | Re: Recursive queries for network traversal |
Previous Message | Jean-Yves F. Barbier | 2010-08-07 15:40:50 | Re: Table-design for categories, suggestions needed |