From: | Kris Jurka <books(at)ejurka(dot)com> |
---|---|
To: | Xavier Poinsard <xpoinsard(at)free(dot)fr> |
Cc: | pgsql-jdbc(at)postgresql(dot)org |
Subject: | random escape function |
Date: | 2007-04-11 08:21:38 |
Message-ID: | Pine.BSO.4.64.0704110403090.13329@leary.csoft.net |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-jdbc |
The escape function {fn rand(param)} isn't working on 8.3 servers because
setseed has been changed to return void and reading the JDBC spec, I'm not
sure it ever worked as required.
We map "SELECT {fn rand(0.5)}" to "SELECT setseed(0.5)*0+random()" which
worked in previous servers because the setseed call returned an int. Now
we get "ERROR: operator does not exist: void * integer". So that's our
immediate problem, but looking a little closer at the spec shows that rand
is supposed to take an integer argument, not a float limited to 0->1. So
at minimum we'd need to remap the parameter range.
Also the spec doesn't say what rand is actually supposed to do. What is
the purpose of providing a rand function if you have to supply a seed
every single time. The seed has to be random, so where does that come
from? Is the idea that you pass the same seed every time and get the next
value from that seed's stream?
Given the above functional and definitional problems I think the easiest
course of action is to simply remove the mapping.
Kris Jurka
From | Date | Subject | |
---|---|---|---|
Next Message | Radim Kolar SF.NET | 2007-04-11 08:31:34 | scrollable result sets performance problems |
Previous Message | Marc Mamin | 2007-04-11 08:12:14 | Re: Encoding issue (utf8): different strings received from java than from PGAdmin |