]> granicus.if.org Git - postgresql/commitdiff
Document and enforce that the usable range of setseed() arguments is
authorTom Lane <tgl@sss.pgh.pa.us>
Mon, 10 Mar 2008 12:39:23 +0000 (12:39 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Mon, 10 Mar 2008 12:39:23 +0000 (12:39 +0000)
-1 to 1, not 0 to 1.  The actual behavior for values within this range
does not change.  Kris Jurka

doc/src/sgml/func.sgml
doc/src/sgml/ref/set.sgml
src/backend/utils/adt/float.c
src/backend/utils/misc/guc.c

index 1052ab0d670ddde6f9d2b1cbc9cf6604aca5fafc..ec138a5c2dcf17eb5c63218365eb2f7652fb23f8 100644 (file)
@@ -1,4 +1,4 @@
-<!-- $PostgreSQL: pgsql/doc/src/sgml/func.sgml,v 1.423 2008/03/06 18:49:32 momjian Exp $ -->
+<!-- $PostgreSQL: pgsql/doc/src/sgml/func.sgml,v 1.424 2008/03/10 12:39:22 tgl Exp $ -->
 
  <chapter id="functions">
   <title>Functions and Operators</title>
       <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>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 26ee8594b447ea76f606abc06efdd6694ebf8d04..a31d15405261f5252b7cf3a2582d367589b85507 100644 (file)
@@ -1,5 +1,5 @@
 <!--
-$PostgreSQL: pgsql/doc/src/sgml/ref/set.sgml,v 1.91 2007/09/11 00:06:41 tgl Exp $
+$PostgreSQL: pgsql/doc/src/sgml/ref/set.sgml,v 1.92 2008/03/10 12:39:22 tgl Exp $
 PostgreSQL documentation
 -->
 
@@ -166,7 +166,7 @@ SET [ SESSION | LOCAL ] TIME ZONE { <replaceable class="PARAMETER">timezone</rep
       <para>
        Sets the internal seed for the random number generator (the
        function <function>random</function>).  Allowed values are
-       floating-point numbers between 0 and 1, which are then
+       floating-point numbers between -1 and 1, which are then
        multiplied by 2<superscript>31</>-1.
       </para>
 
index e7d0cdd70ddd053869e4e378037980bac68f6bb7..2f1e262ea7ad315b89cf4b413e73a494c245ba49 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *       $PostgreSQL: pgsql/src/backend/utils/adt/float.c,v 1.153 2008/01/01 19:45:52 momjian Exp $
+ *       $PostgreSQL: pgsql/src/backend/utils/adt/float.c,v 1.154 2008/03/10 12:39:22 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -1684,8 +1684,12 @@ Datum
 setseed(PG_FUNCTION_ARGS)
 {
        float8          seed = PG_GETARG_FLOAT8(0);
-       int                     iseed = (int) (seed * MAX_RANDOM_VALUE);
+       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 2616c9795357755bcf7cb378f3bbc81c92fca25b..49958cb4e7f3ab74c62a82ecf89b6fb80294fe11 100644 (file)
@@ -10,7 +10,7 @@
  * Written by Peter Eisentraut <peter_e@gmx.net>.
  *
  * IDENTIFICATION
- *       $PostgreSQL: pgsql/src/backend/utils/misc/guc.c,v 1.435 2008/03/10 03:22:29 tgl Exp $
+ *       $PostgreSQL: pgsql/src/backend/utils/misc/guc.c,v 1.436 2008/03/10 12:39:23 tgl Exp $
  *
  *--------------------------------------------------------------------
  */
@@ -1849,7 +1849,7 @@ static struct config_real ConfigureNamesReal[] =
                        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
+               0.0, -1.0, 1.0, assign_random_seed, show_random_seed
        },
 
        {