diff --git a/doc/src/sgml/func.sgml b/doc/src/sgml/func.sgml index a3e66eabc34a701d04be5a9d5df9a46b5dfb6fe3..f2d84a969aa7f4a6634e75241aedbc48ee4296da 100644 --- a/doc/src/sgml/func.sgml +++ b/doc/src/sgml/func.sgml @@ -1,5 +1,5 @@ <!-- -$Header: /cvsroot/pgsql/doc/src/sgml/func.sgml,v 1.138 2003/02/06 20:25:31 tgl Exp $ +$Header: /cvsroot/pgsql/doc/src/sgml/func.sgml,v 1.139 2003/02/13 05:24:01 momjian Exp $ PostgreSQL documentation --> @@ -682,14 +682,15 @@ PostgreSQL documentation <entry><literal>round(42.4382, 2)</literal></entry> <entry>42.44</entry> </row> -<!-- - <row> - <entry><function>setseed</function>(<replaceable>new-seed</replaceable>)</entry> - <entry>set seed for subsequent random() calls</entry> - <entry><literal>setseed(0.54823)</literal></entry> - <entry></entry> - </row> ---> + + <row> + <entry><function>setseed</function>(<type>dp</type>)</entry> + <entry><type>int32</type></entry> + <entry>set seed for subsequent random() calls</entry> + <entry><literal>setseed(0.54823)</literal></entry> + <entry>1177314959</entry> + </row> + <row> <entry><function>sign</function>(<type>dp</type> or <type>numeric</type>)</entry> <entry>(same as input)</entry> @@ -955,7 +956,8 @@ PostgreSQL documentation <entry><function>substring</function>(<parameter>string</parameter> from <replaceable>pattern</replaceable> for <replaceable>escape</replaceable>)</entry> <entry><type>text</type></entry> <entry> - Extract substring matching SQL regular expression + Extract substring matching <acronym>SQL</acronym> regular + expression <indexterm> <primary>substring</primary> </indexterm> @@ -1168,7 +1170,7 @@ PostgreSQL documentation <entry><type>text</type></entry> <entry> Return the given string suitably quoted to be used as an identifier - in an SQL query string. + in an <acronym>SQL</acronym> query string. Quotes are added only if necessary (i.e., if the string contains non-identifier characters or would be case-folded). Embedded quotes are properly doubled. @@ -1182,7 +1184,7 @@ PostgreSQL documentation <entry><type>text</type></entry> <entry> Return the given string suitably quoted to be used as a literal - in an SQL query string. + in an <acronym>SQL</acronym> query string. Embedded quotes and backslashes are properly doubled. </entry> <entry><literal>quote_literal('O\'Reilly')</literal></entry> @@ -2511,14 +2513,15 @@ PostgreSQL documentation <function>SUBSTRING(<parameter>string</parameter> FROM <replaceable>pattern</replaceable> FOR <replaceable>escape</replaceable>)</function>, provides - extraction of a substring that matches a SQL99 regular expression - pattern. As with <literal>SIMILAR TO</>, the specified pattern - must match to the entire data string, else the function fails and - returns null. To indicate the part of the pattern that should be - returned on success, SQL99 specifies that the pattern must - contain two occurrences of the escape character followed by - double quote (<literal>"</>). The text matching the portion of - the pattern between these markers is returned. + extraction of a substring that matches a <acronym>SQL99</acronym> + regular expression pattern. As with <literal>SIMILAR TO</>, the + specified pattern must match to the entire data string, else the + function fails and returns null. To indicate the part of the + pattern that should be returned on success, + <acronym>SQL99</acronym> specifies that the pattern must contain + two occurrences of the escape character followed by double quote + (<literal>"</>). The text matching the portion of the pattern + between these markers is returned. </para> <para> @@ -6025,11 +6028,11 @@ SELECT TIMESTAMP 'now'; </table> <para> - For largely historical reasons, the sequence to be operated on by - a sequence-function call is specified by a text-string argument. - To achieve some compatibility with the handling of ordinary SQL - names, the sequence functions convert their argument to lower case - unless the string is double-quoted. Thus + For largely historical reasons, the sequence to be operated on by a + sequence-function call is specified by a text-string argument. To + achieve some compatibility with the handling of ordinary + <acronym>SQL</acronym> names, the sequence functions convert their + argument to lower case unless the string is double-quoted. Thus <programlisting> nextval('foo') <lineannotation>operates on sequence <literal>foo</literal></> nextval('FOO') <lineannotation>operates on sequence <literal>foo</literal></> @@ -6480,7 +6483,8 @@ SELECT NULLIF(value, '(none)') ... <para> The <function>current_setting</function> is used to obtain the current value of the <parameter>setting_name</parameter> setting, as a query - result. It is the equivalent to the SQL <command>SHOW</command> command. + result. It is the equivalent to the <acronym>SQL</acronym> + <command>SHOW</command> command. For example: <programlisting> select current_setting('DateStyle'); @@ -6497,8 +6501,8 @@ select current_setting('DateStyle'); If <parameter>is_local</parameter> is set to <literal>true</literal>, the new value will only apply to the current transaction. If you want the new value to apply for the current session, use - <literal>false</literal> instead. It is the equivalent to the SQL - <command>SET</command> command. For example: + <literal>false</literal> instead. It is the equivalent to the + <acronym>SQL</acronym> <command>SET</command> command. For example: <programlisting> select set_config('show_statement_stats','off','f'); set_config diff --git a/src/backend/utils/adt/misc.c b/src/backend/utils/adt/misc.c index 6b105fdef4d81a2286a165ea00fb6e1e9d52e3e8..1f85e4f499211f5e3c78194df4061440f46ea4d0 100644 --- a/src/backend/utils/adt/misc.c +++ b/src/backend/utils/adt/misc.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/utils/adt/misc.c,v 1.27 2002/09/04 20:31:28 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/utils/adt/misc.c,v 1.28 2003/02/13 05:24:02 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -43,75 +43,6 @@ nonnullvalue(PG_FUNCTION_ARGS) PG_RETURN_BOOL(true); } -/* - * oidrand (oid o, int4 X)- - * Takes in an oid and a int4 X, and will return 'true' about 1/X of - * the time. If X == 0, this will always return true. - * Useful for doing random sampling or subsetting. - * - * Example use: - * select * from TEMP where oidrand(TEMP.oid, 10) - * will return about 1/10 of the tuples in TEMP - * - * NOTE: the OID input is not used at all. It is there just because of - * an old optimizer bug: a qual expression containing no variables was - * mistakenly assumed to be a constant. Pretending to access the row's OID - * prevented the optimizer from treating the oidrand() result as constant. - */ - -static bool random_initialized = false; - -Datum -oidrand(PG_FUNCTION_ARGS) -{ -#ifdef NOT_USED - Oid o = PG_GETARG_OID(0); -#endif - int32 X = PG_GETARG_INT32(1); - bool result; - - if (X == 0) - PG_RETURN_BOOL(true); - - /* - * We do this because the cancel key is actually a random, so we don't - * want them to be able to request random numbers using our postmaster - * seeded value. - */ - if (!random_initialized) - { - srandom((unsigned int) time(NULL)); - random_initialized = true; - } - - result = (random() % X == 0); - PG_RETURN_BOOL(result); -} - -/* - oidsrand(int32 X) - - seeds the random number generator - always returns true -*/ -Datum -oidsrand(PG_FUNCTION_ARGS) -{ - int32 X = PG_GETARG_INT32(0); - - srandom((unsigned int) X); - random_initialized = true; - PG_RETURN_BOOL(true); -} - - -Datum -userfntest(PG_FUNCTION_ARGS) -{ - int32 i = PG_GETARG_INT32(0); - - PG_RETURN_INT32(i); -} - /* * current_database() * Expose the current database to the user diff --git a/src/include/catalog/catversion.h b/src/include/catalog/catversion.h index df4347633f2699baad6861401d52ce69e3e82b26..230f1e277acf08b5f7bc98e5d7f293e524baf172 100644 --- a/src/include/catalog/catversion.h +++ b/src/include/catalog/catversion.h @@ -37,7 +37,7 @@ * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $Id: catversion.h,v 1.175 2003/02/03 21:15:44 tgl Exp $ + * $Id: catversion.h,v 1.176 2003/02/13 05:24:02 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -53,6 +53,6 @@ */ /* yyyymmddN */ -#define CATALOG_VERSION_NO 200302031 +#define CATALOG_VERSION_NO 200302131 #endif diff --git a/src/include/catalog/pg_proc.h b/src/include/catalog/pg_proc.h index d7b13a762ebbdde928115e96070760ffcda0cd3f..f32715284b0e79887359621ae38cad154228cd0f 100644 --- a/src/include/catalog/pg_proc.h +++ b/src/include/catalog/pg_proc.h @@ -7,7 +7,7 @@ * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $Id: pg_proc.h,v 1.282 2003/01/28 22:13:36 tgl Exp $ + * $Id: pg_proc.h,v 1.283 2003/02/13 05:24:02 momjian Exp $ * * NOTES * The script catalog/genbki.sh reads this file and generates .bki @@ -944,12 +944,6 @@ DESCR("greater-than"); /* OIDS 700 - 799 */ DATA(insert OID = 710 ( getpgusername PGNSP PGUID 12 f f t f s 0 19 "" current_user - _null_ )); DESCR("deprecated -- use current_user"); -DATA(insert OID = 711 ( userfntest PGNSP PGUID 12 f f t f i 1 23 "23" userfntest - _null_ )); -DESCR(""); -DATA(insert OID = 713 ( oidrand PGNSP PGUID 12 f f t f v 2 16 "26 23" oidrand - _null_ )); -DESCR("random"); -DATA(insert OID = 715 ( oidsrand PGNSP PGUID 12 f f t f v 1 16 "23" oidsrand - _null_ )); -DESCR("seed random number generator"); DATA(insert OID = 716 ( oidlt PGNSP PGUID 12 f f t f i 2 16 "26 26" oidlt - _null_ )); DESCR("less-than"); DATA(insert OID = 717 ( oidle PGNSP PGUID 12 f f t f i 2 16 "26 26" oidle - _null_ )); diff --git a/src/include/utils/builtins.h b/src/include/utils/builtins.h index df20f4ad499a1ce093e6c7dc937cfcdfcf45524d..e956f54fef6527c591c4f6cc5f78aa1cfb059539 100644 --- a/src/include/utils/builtins.h +++ b/src/include/utils/builtins.h @@ -7,7 +7,7 @@ * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $Id: builtins.h,v 1.207 2003/02/06 20:25:33 tgl Exp $ + * $Id: builtins.h,v 1.208 2003/02/13 05:24:04 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -315,9 +315,6 @@ extern Datum float84ge(PG_FUNCTION_ARGS); /* misc.c */ extern Datum nullvalue(PG_FUNCTION_ARGS); extern Datum nonnullvalue(PG_FUNCTION_ARGS); -extern Datum oidrand(PG_FUNCTION_ARGS); -extern Datum oidsrand(PG_FUNCTION_ARGS); -extern Datum userfntest(PG_FUNCTION_ARGS); extern Datum current_database(PG_FUNCTION_ARGS); /* not_in.c */ diff --git a/src/test/regress/expected/random.out b/src/test/regress/expected/random.out index 0f4dce0bbe1805c1548203af6fd3300d3935b97f..583be02be09fe3ac907f25ef1dc35c635666108d 100644 --- a/src/test/regress/expected/random.out +++ b/src/test/regress/expected/random.out @@ -15,11 +15,11 @@ SELECT count(*) FROM onek; -- have a regression test which can pass/fail -- - thomas 1998-08-17 SELECT count(*) AS random INTO RANDOM_TBL - FROM onek WHERE oidrand(onek.oid, 10); + FROM onek WHERE random() < 1.0/10; -- select again, the count should be different INSERT INTO RANDOM_TBL (random) SELECT count(*) - FROM onek WHERE oidrand(onek.oid, 10); + FROM onek WHERE random() < 1.0/10; -- now test the results for randomness in the correct range SELECT random, count(random) FROM RANDOM_TBL GROUP BY random HAVING count(random) > 1; diff --git a/src/test/regress/sql/random.sql b/src/test/regress/sql/random.sql index 1279a8b0f488c5ab632de19131226e94a43f99b7..e2333b985f83a191ac7edd6e24168ef45cd0e626 100644 --- a/src/test/regress/sql/random.sql +++ b/src/test/regress/sql/random.sql @@ -12,12 +12,12 @@ SELECT count(*) FROM onek; -- have a regression test which can pass/fail -- - thomas 1998-08-17 SELECT count(*) AS random INTO RANDOM_TBL - FROM onek WHERE oidrand(onek.oid, 10); + FROM onek WHERE random() < 1.0/10; -- select again, the count should be different INSERT INTO RANDOM_TBL (random) SELECT count(*) - FROM onek WHERE oidrand(onek.oid, 10); + FROM onek WHERE random() < 1.0/10; -- now test the results for randomness in the correct range SELECT random, count(random) FROM RANDOM_TBL