postgresql/contrib
Tom Lane 41b9c8452b Replace libpq's "row processor" API with a "single row" mode.
After taking awhile to digest the row-processor feature that was added to
libpq in commit 92785dac2e, we've concluded
it is over-complicated and too hard to use.  Leave the core infrastructure
changes in place (that is, there's still a row processor function inside
libpq), but remove the exposed API pieces, and instead provide a "single
row" mode switch that causes PQgetResult to return one row at a time in
separate PGresult objects.

This approach incurs more overhead than proper use of a row processor
callback would, since construction of a PGresult per row adds extra cycles.
However, it is far easier to use and harder to break.  The single-row mode
still affords applications the primary benefit that the row processor API
was meant to provide, namely not having to accumulate large result sets in
memory before processing them.  Preliminary testing suggests that we can
probably buy back most of the extra cycles by micro-optimizing construction
of the extra results, but that task will be left for another day.

Marko Kreen
2012-08-02 13:10:30 -04:00
..
adminpack Update copyright notices for year 2012. 2012-01-01 18:01:58 -05:00
auth_delay pgindent run before PG 9.1 beta 1. 2011-04-10 11:42:00 -04:00
auto_explain Run pgindent on 9.2 source tree in preparation for first 9.3 2012-06-10 15:20:04 -04:00
btree_gin Throw a useful error message if an extension script file is fed to psql. 2011-10-12 15:45:03 -04:00
btree_gist Reduce messages about implicit indexes and sequences to DEBUG1. 2012-07-04 20:35:29 -04:00
chkpass Throw a useful error message if an extension script file is fed to psql. 2011-10-12 15:45:03 -04:00
citext Reduce messages about implicit indexes and sequences to DEBUG1. 2012-07-04 20:35:29 -04:00
cube Replace int2/int4 in C code with int16/int32 2012-06-25 01:51:46 +03:00
dblink Replace libpq's "row processor" API with a "single row" mode. 2012-08-02 13:10:30 -04:00
dict_int Update copyright notices for year 2012. 2012-01-01 18:01:58 -05:00
dict_xsyn Update copyright notices for year 2012. 2012-01-01 18:01:58 -05:00
dummy_seclabel Update copyright notices for year 2012. 2012-01-01 18:01:58 -05:00
earthdistance Throw a useful error message if an extension script file is fed to psql. 2011-10-12 15:45:03 -04:00
file_fdw Skip text->binary conversion of unnecessary columns in contrib/file_fdw. 2012-07-12 16:26:59 -04:00
fuzzystrmatch Even more duplicate word removal, in the spirit of the season 2012-05-02 20:56:03 +03:00
hstore Remove unreachable code 2012-07-16 22:15:03 +03:00
intagg Throw a useful error message if an extension script file is fed to psql. 2011-10-12 15:45:03 -04:00
intarray Remove unreachable code 2012-07-16 22:15:03 +03:00
isn Update copyright notices for year 2012. 2012-01-01 18:01:58 -05:00
lo Throw a useful error message if an extension script file is fed to psql. 2011-10-12 15:45:03 -04:00
ltree Remove unreachable code 2012-07-16 22:15:03 +03:00
oid2name Make oid2name, pgbench, and vacuumlo set fallback_application_name. 2012-07-04 15:39:33 -04:00
pageinspect Replace XLogRecPtr struct with a 64-bit integer. 2012-06-24 19:19:45 +03:00
passwordcheck Update copyright notices for year 2012. 2012-01-01 18:01:58 -05:00
pg_archivecleanup Make documentation of --help and --version options more consistent 2012-06-18 02:46:59 +03:00
pg_buffercache Throw a useful error message if an extension script file is fed to psql. 2011-10-12 15:45:03 -04:00
pg_freespacemap Throw a useful error message if an extension script file is fed to psql. 2011-10-12 15:45:03 -04:00
pg_standby Make documentation of --help and --version options more consistent 2012-06-18 02:46:59 +03:00
pg_stat_statements Make new event trigger facility actually do something. 2012-07-20 11:39:01 -04:00
pg_test_fsync Run pgindent on 9.2 source tree in preparation for first 9.3 2012-06-10 15:20:04 -04:00
pg_test_timing Run pgindent on 9.2 source tree in preparation for first 9.3 2012-06-10 15:20:04 -04:00
pg_trgm Replace int2/int4 in C code with int16/int32 2012-06-25 01:51:46 +03:00
pg_upgrade Simplify pg_upgrade's handling when returning directory listings. 2012-07-26 06:22:22 -04:00
pg_upgrade_support Update copyright notices for year 2012. 2012-01-01 18:01:58 -05:00
pgbench Make pgbench vacuum before building indexes. 2012-07-23 14:42:35 -04:00
pgcrypto Run pgindent on 9.2 source tree in preparation for first 9.3 2012-06-10 15:20:04 -04:00
pgrowlocks Throw a useful error message if an extension script file is fed to psql. 2011-10-12 15:45:03 -04:00
pgstattuple Reduce messages about implicit indexes and sequences to DEBUG1. 2012-07-04 20:35:29 -04:00
seg Run newly-configured perltidy script on Perl files. 2012-07-04 21:47:49 -04:00
sepgsql Reduce messages about implicit indexes and sequences to DEBUG1. 2012-07-04 20:35:29 -04:00
spi Run pgindent on 9.2 source tree in preparation for first 9.3 2012-06-10 15:20:04 -04:00
sslinfo Lots of doc corrections. 2012-04-23 22:43:09 -04:00
start-scripts Support Linux's oom_score_adj API as well as the older oom_adj API. 2012-06-13 15:35:52 -04:00
tablefunc Reduce messages about implicit indexes and sequences to DEBUG1. 2012-07-04 20:35:29 -04:00
tcn Triggered change notifications. 2012-01-19 23:15:15 -05:00
test_parser Fix one-byte buffer overrun in contrib/test_parser. 2012-01-09 19:56:27 -05:00
tsearch2 Update copyright notices for year 2012. 2012-01-01 18:01:58 -05:00
unaccent Fix some typos 2012-04-22 19:23:47 +03:00
uuid-ossp Update copyright notices for year 2012. 2012-01-01 18:01:58 -05:00
vacuumlo Make oid2name, pgbench, and vacuumlo set fallback_application_name. 2012-07-04 15:39:33 -04:00
xml2 Run pgindent on 9.2 source tree in preparation for first 9.3 2012-06-10 15:20:04 -04:00
contrib-global.mk Remove cvs keywords from all files. 2010-09-20 22:08:53 +02:00
Makefile pg_test_timing utility, to measure clock monotonicity and timing cost. 2012-03-27 16:14:00 -04:00
README Update contrib/README 2012-04-14 09:29:54 +03:00

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 "gmake all" and "gmake
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.