| From: | Artacus <artacus(at)comcast(dot)net> |
|---|---|
| To: | pgsql-general(at)postgresql(dot)org |
| Subject: | Problem with volatile function |
| Date: | 2008-06-19 03:11:10 |
| Message-ID: | 4859CE4E.5010501@comcast.net |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-general |
So my understanding of volatile functions is that volatile functions can
return different results given the same input.
I have a function random(int, int) that returns a random value between
$1 and $2. I want to use it in a query to generate values. But it only
evaluates once per query and not once per row like I need it to.
-- This always returns the same value
SELECT ts.sis_id, bldg_id, f_name.name, l_name.name
FROM tmp_students ts
JOIN names AS f_name ON
ts.gender = f_name.gender
WHERE f_name.counter = random(1,300)
--As does this
SELECT ts.sis_id, bldg_id, f_name.name, l_name.name
FROM tmp_students ts
JOIN names AS f_name ON
ts.gender = f_name.gender
AND ts.counter = random(1,100)
-- This generates different numbers
SELECT random(1,100), s.*
FROM usr_students s
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Tom Lane | 2008-06-19 03:43:20 | Re: Problem with volatile function |
| Previous Message | Bruce Momjian | 2008-06-19 02:43:23 | Re: Forcibly vacating locks |