random escape function

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

Responses

Browse pgsql-jdbc by date

  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