Thanks! makes it clearer :-) its not that obvious to guess the consequences of the "volatile" behaviour. regards,
Marc MILLAS Senior Architect +33607850334 www.mokadb.com On Wed, Jul 15, 2020 at 1:53 AM David Rowley <dgrowle...@gmail.com> wrote: > On Wed, 15 Jul 2020 at 04:01, Marc Millas <marc.mil...@mokadb.com> wrote: > > your answer helps me understand my first problem. > > so, I rewrote a simple loop so as to avoid the "volatile" behaviour. > > Not sure what you're trying to do with the plpgsql, but you can just > escape the multiple evaluations by putting the volatile function in a > sub-select with no FROM clause. > > SELECT ... FROM ... WHERE id = (SELECT ceiling(random()*2582)); > > Or the more traditional way to get a random row is: > > SELECT ... FROM ... WHERE id BETWEEN 0 AND 2585 ORDER BY random() LIMIT 1; > > David >