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: | Raw Message | Whole Thread | 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 |