postgresql/contrib
Tom Lane 3804539e48 Replace random(), pg_erand48(), etc with a better PRNG API and algorithm.
Standardize on xoroshiro128** as our basic PRNG algorithm, eliminating
a bunch of platform dependencies as well as fundamentally-obsolete PRNG
code.  In addition, this API replacement will ease replacing the
algorithm again in future, should that become necessary.

xoroshiro128** is a few percent slower than the drand48 family,
but it can produce full-width 64-bit random values not only 48-bit,
and it should be much more trustworthy.  It's likely to be noticeably
faster than the platform's random(), depending on which platform you
are thinking about; and we can have non-global state vectors easily,
unlike with random().  It is not cryptographically strong, but neither
are the functions it replaces.

Fabien Coelho, reviewed by Dean Rasheed, Aleksander Alekseev, and myself

Discussion: https://postgr.es/m/alpine.DEB.2.22.394.2105241211230.165418@pseudo
2021-11-28 21:33:07 -05:00
..
adminpack
amcheck Replace random(), pg_erand48(), etc with a better PRNG API and algorithm. 2021-11-28 21:33:07 -05:00
auth_delay
auto_explain Replace random(), pg_erand48(), etc with a better PRNG API and algorithm. 2021-11-28 21:33:07 -05:00
bloom Move Perl test modules to a better namespace 2021-10-24 10:28:19 -04:00
bool_plperl
btree_gin
btree_gist Fix gist_bool_ops to use gbtreekey2 2021-11-08 01:14:55 +01:00
citext
cube
dblink Improve HINT message that FDW reports when there are no valid options. 2021-10-27 00:46:52 +09:00
dict_int
dict_xsyn
earthdistance
file_fdw Replace random(), pg_erand48(), etc with a better PRNG API and algorithm. 2021-11-28 21:33:07 -05:00
fuzzystrmatch
hstore
hstore_plperl
hstore_plpython
intagg
intarray
isn
jsonb_plperl
jsonb_plpython
lo
ltree Clean up more code using "(expr) ? true : false" 2021-10-11 09:36:42 +09:00
ltree_plpython
oid2name Move Perl test modules to a better namespace 2021-10-24 10:28:19 -04:00
old_snapshot
pageinspect Fix incorrect format placeholders 2021-11-24 08:15:17 +01:00
passwordcheck
pg_buffercache
pg_freespacemap
pg_prewarm
pg_stat_statements Don't try to read a multi-GB pg_stat_statements file in one call. 2021-10-31 19:13:48 -04:00
pg_surgery
pg_trgm Avoid some other O(N^2) hazards in list manipulation. 2021-11-01 16:24:39 -04:00
pg_visibility
pgcrypto pgcrypto: Remove non-OpenSSL support 2021-11-05 14:06:59 +01:00
pgrowlocks
pgstattuple
postgres_fdw Replace random(), pg_erand48(), etc with a better PRNG API and algorithm. 2021-11-28 21:33:07 -05:00
seg
sepgsql
spi
sslinfo contrib/sslinfo needs a fix too to make hamerkop happy. 2021-11-07 11:33:53 -05:00
start-scripts
tablefunc Replace random(), pg_erand48(), etc with a better PRNG API and algorithm. 2021-11-28 21:33:07 -05:00
tcn
test_decoding Add SQL functions to monitor the directory contents of replication slots 2021-11-23 19:29:42 +09:00
tsm_system_rows Replace random(), pg_erand48(), etc with a better PRNG API and algorithm. 2021-11-28 21:33:07 -05:00
tsm_system_time Replace random(), pg_erand48(), etc with a better PRNG API and algorithm. 2021-11-28 21:33:07 -05:00
unaccent
uuid-ossp uuid-ossp: Remove obsolete build connection with pgcrypto 2021-10-30 12:53:02 +02:00
vacuumlo Move Perl test modules to a better namespace 2021-10-24 10:28:19 -04:00
xml2
contrib-global.mk
Makefile pgcrypto: Remove non-OpenSSL support 2021-11-05 14:06:59 +01:00
README

The PostgreSQL contrib tree
---------------------------

This subtree contains porting tools, analysis utilities, and plug-in
features that are not part of the core PostgreSQL system, mainly
because they address a limited audience or are too experimental to be
part of the main source tree.  This does not preclude their
usefulness.

User documentation for each module appears in the main SGML
documentation.

When building from the source distribution, these modules are not
built automatically, unless you build the "world" target.  You can
also build and install them all by running "make all" and "make
install" in this directory; or to build and install just one selected
module, do the same in that module's subdirectory.

Some directories supply new user-defined functions, operators, or
types.  To make use of one of these modules, after you have installed
the code you need to register the new SQL objects in the database
system by executing a CREATE EXTENSION command.  In a fresh database,
you can simply do

    CREATE EXTENSION module_name;

See the PostgreSQL documentation for more information about this
procedure.