On Mon, 10 Mar 2008, Tom Lane wrote:
I'd be inclined to leave the mapping alone and just insert a warning
(or hard error) for inputs outside the range -1 to 1.
Here's a patch that errors out for out of range values.
Kris Jurka
Index: doc/src/sgml/func.sgml
===================================================================
RCS file: /projects/cvsroot/pgsql/doc/src/sgml/func.sgml,v
retrieving revision 1.423
diff -c -r1.423 func.sgml
*** doc/src/sgml/func.sgml 6 Mar 2008 18:49:32 -0000 1.423
--- doc/src/sgml/func.sgml 10 Mar 2008 06:11:55 -0000
***************
*** 828,834 ****
<row>
<entry><literal><function>setseed</function>(<type>dp</type>)</literal></entry>
<entry><type>void</type></entry>
! <entry>set seed for subsequent <literal>random()</literal> calls
(value between 0 and 1.0)</entry>
<entry><literal>setseed(0.54823)</literal></entry>
<entry></entry>
</row>
--- 828,834 ----
<row>
<entry><literal><function>setseed</function>(<type>dp</type>)</literal></entry>
<entry><type>void</type></entry>
! <entry>set seed for subsequent <literal>random()</literal> calls
(value between -1.0 and 1.0)</entry>
<entry><literal>setseed(0.54823)</literal></entry>
<entry></entry>
</row>
Index: src/backend/utils/adt/float.c
===================================================================
RCS file: /projects/cvsroot/pgsql/src/backend/utils/adt/float.c,v
retrieving revision 1.153
diff -c -r1.153 float.c
*** src/backend/utils/adt/float.c 1 Jan 2008 19:45:52 -0000 1.153
--- src/backend/utils/adt/float.c 10 Mar 2008 06:11:55 -0000
***************
*** 1684,1691 ****
setseed(PG_FUNCTION_ARGS)
{
float8 seed = PG_GETARG_FLOAT8(0);
! int iseed = (int) (seed * MAX_RANDOM_VALUE);
srandom((unsigned int) iseed);
PG_RETURN_VOID();
--- 1684,1695 ----
setseed(PG_FUNCTION_ARGS)
{
float8 seed = PG_GETARG_FLOAT8(0);
! int iseed;
+ if (seed < -1 || seed > 1)
+ elog(ERROR, "setseed parameter %f out of range [-1,1]", seed);
+
+ iseed = (int) (seed * MAX_RANDOM_VALUE);
srandom((unsigned int) iseed);
PG_RETURN_VOID();
Index: src/backend/utils/misc/guc.c
===================================================================
RCS file: /projects/cvsroot/pgsql/src/backend/utils/misc/guc.c,v
retrieving revision 1.435
diff -c -r1.435 guc.c
*** src/backend/utils/misc/guc.c 10 Mar 2008 03:22:29 -0000 1.435
--- src/backend/utils/misc/guc.c 10 Mar 2008 06:11:55 -0000
***************
*** 1849,1855 ****
GUC_NO_SHOW_ALL | GUC_NO_RESET_ALL | GUC_NOT_IN_SAMPLE
| GUC_DISALLOW_IN_FILE
},
&phony_random_seed,
! 0.5, 0.0, 1.0, assign_random_seed, show_random_seed
},
{
--- 1849,1855 ----
GUC_NO_SHOW_ALL | GUC_NO_RESET_ALL | GUC_NOT_IN_SAMPLE
| GUC_DISALLOW_IN_FILE
},
&phony_random_seed,
! 0.5, -1.0, 1.0, assign_random_seed, show_random_seed
},
{
--
Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-bugs