Sadly I didnt write this function. It was written in C and packaged in a shared
module .so. I access it thru postgresql as plpgsql function. I cannot edit the
function thus.
I tried this
CREATE TEMPORARY SEQUENCE serial START 1;
SELECT nextval('serial'), astext(tmp.the_geom), street FROM
shortest_path_as_geometry('bklion', 185, 10953) AS tmp LEFT JOIN (SELECT * FROM
bklion) AS ss ON ss.the_geom = tmp.the_geom;
I know this is inefficient, and I surely dont know the repercussion of using
the temporary sequence in a web application. Do you?
Appreciate any input.
Thanks!
- Hassan Adekoya
----- Original Message ----
From: Craig A. James <[EMAIL PROTECTED]>
To: Hassan Adekoya <[EMAIL PROTECTED]>
Cc: [email protected]
Sent: Saturday, July 15, 2006 1:27:20 PM
Subject: Re: [PERFORM] increment Rows in an SQL Result Set postgresql
Hassan,
> 1. I have a function that given two parameter produces an arbitrary id, and
> text. However arbitrary the id and text are, they are in certain order. i.e.
> it
> is imperative that whatever processing I do, the order is preserved.
What type of function is this? Did you write it in C? An SQL procedure?
If the function is written in C, you can create a static local variable which
you increment every time you call your function, and which you return along
with your other two values. As long as your client is connected to the
back-end server, you're guaranteed that it's a single process, and it's not
multi-threaded, so this is a safe approach. However, note that if you
disconnect and reconnect, your counter will be reset to zero.
If your function is written in a different language or is a procedure, you
might create a sequence that your function can query.
The trick is that it is the function itself that must return the incremented
value, i.e. you must return three, not two, values from your function. That
way, you're not relying on any specific features of the planner, so your three
values will stick together.
Craig
---------------------------(end of broadcast)---------------------------
TIP 5: don't forget to increase your free space map settings