Bruce Momjian 54f7338fa1 This patch implements holdable cursors, following the proposal
(materialization into a tuple store) discussed on pgsql-hackers earlier.
I've updated the documentation and the regression tests.

Notes on the implementation:

- I needed to change the tuple store API slightly -- it assumes that it
won't be used to hold data across transaction boundaries, so the temp
files that it uses for on-disk storage are automatically reclaimed at
end-of-transaction. I added a flag to tuplestore_begin_heap() to control
this behavior. Is changing the tuple store API in this fashion OK?

- in order to store executor results in a tuple store, I added a new
CommandDest. This works well for the most part, with one exception: the
current DestFunction API doesn't provide enough information to allow the
Executor to store results into an arbitrary tuple store (where the
particular tuple store to use is chosen by the call site of
ExecutorRun). To workaround this, I've temporarily hacked up a solution
that works, but is not ideal: since the receiveTuple DestFunction is
passed the portal name, we can use that to lookup the Portal data
structure for the cursor and then use that to get at the tuple store the
Portal is using. This unnecessarily ties the Portal code with the
tupleReceiver code, but it works...

The proper fix for this is probably to change the DestFunction API --
Tom suggested passing the full QueryDesc to the receiveTuple function.
In that case, callers of ExecutorRun could "subclass" QueryDesc to add
any additional fields that their particular CommandDest needed to get
access to. This approach would work, but I'd like to think about it for
a little bit longer before deciding which route to go. In the mean time,
the code works fine, so I don't think a fix is urgent.

- (semi-related) I added a NO SCROLL keyword to DECLARE CURSOR, and
adjusted the behavior of SCROLL in accordance with the discussion on
-hackers.

- (unrelated) Cleaned up some SGML markup in sql.sgml, copy.sgml

Neil Conway
2003-03-27 16:51:29 +00:00
..
2002-12-02 00:29:01 +00:00
2002-09-04 20:31:48 +00:00
2002-12-31 10:22:03 +00:00
2002-09-04 20:31:48 +00:00
2003-01-07 22:18:43 +00:00
2003-01-07 22:17:14 +00: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.

Each subdirectory contains a README file with information about the
module.  Most items can be built with `gmake all' and installed with
`gmake install' in the usual fashion, after you have run the `configure'
script in the top-level directory.  Some directories supply new
user-defined functions, operators, or types.  After you have installed
the files you need to register the new entities in the database system
by running the commands in the supplied .sql file.  For example,

	$ psql -d dbname -f module.sql

See the PostgreSQL documentation for more information about this
procedure.


Index:
------

adddepend -
	Add object dependency information to pre-7.3 objects.
	by Rod Taylor <rbt@rbt.ca>

array -
	Array iterator functions
	by Massimo Dal Zotto <dz@cs.unitn.it>

btree_gist -
	Support for emulating BTREE indexing in GiST
	by Oleg Bartunov <oleg@sai.msu.su> and Teodor Sigaev <teodor@stack.net>

chkpass -
	An auto-encrypted password datatype
	by D'Arcy J.M. Cain <darcy@druid.net>

cube -
	Multidimensional-cube datatype (GiST indexing example)
	by Gene Selkov, Jr. <selkovjr@mcs.anl.gov>

dbase -
	Converts from dbase/xbase to PostgreSQL
	by Maarten.Boekhold <Maarten.Boekhold@reuters.com>,
	   Frank Koormann <fkoorman@usf.uni-osnabrueck.de>,
	   Ivan Baldo <lubaldo@adinet.com.uy>

dblink -
	Allows remote query execution
	by Joe Conway <mail@joeconway.com>

dbmirror -
	Replication server
	by Steven Singer <ssinger@navtechinc.com>

dbsize -
	Reports database and table disk space
	by Peter Eisentraut <peter_e@gmx.net>

earthdistance -
	Operator for computing earth distance for two points
	by Hal Snyder <hal@vailsys.com>

findoidjoins -
	Finds the joins used by oid columns by examining the actual
	values in the oid columns and row oids.
	by Bruce Momjian <pgman@candle.pha.pa.us>

fulltextindex -
	Full text indexing using triggers
	by Maarten Boekhold <maartenb@dutepp0.et.tudelft.nl>

fuzzystrmatch -
	Levenshtein, metaphone, and soundex fuzzy string matching
	by Joe Conway <mail@joeconway.com>, Joel Burton <jburton@scw.org>

intagg -
	Integer aggregator
	by mlw <markw@mohawksoft.com>

intarray -
	Index support for arrays of int4, using GiST
	by Teodor Sigaev <teodor@stack.net> and Oleg Bartunov <oleg@sai.msu.su>

ipc_check -
	Simple test script to help in configuring IPC.
	FreeBSD only, for now.

isbn_issn -
	PostgreSQL type extensions for ISBN (books) and ISSN (serials)
	by Garrett A. Wollman <wollman@khavrinen.lcs.mit.edu>

lo -
	Large Object maintenance
	by Peter Mount <peter@retep.org.uk> 

ltree -
	Tree-like data structures
	by Teodor Sigaev <teodor@stack.net> and Oleg Bartunov <oleg@sai.msu.su>

mSQL-interface -
	mSQL API translation library
	by Aldrin Leal <aldrin@americasnet.com>

mac -
	Support functions for MAC address types
	by Lawrence E. Rosenman <ler@lerctr.org>

miscutil -
	PostgreSQL assert checking and various utility functions
	by Massimo Dal Zotto <dz@cs.unitn.it>

mysql -
	Utility to convert MySQL schema dumps to SQL92 and PostgreSQL
	by Thomas Lockhart <lockhart@alumni.caltech.edu>
	   Max Rudensky <fonin@ziet.zhitomir.ua>
	   Valentine Danilchuk <valdan@ziet.zhitomir.ua>

noupdate -
	Trigger to prevent updates on single columns

oid2name - 
	Maps numeric files to table names
	by B Palmer <bpalmer@crimelabs.net>

oracle -
	Converts Oracle database schema to PostgreSQL
	by Gilles Darold <gilles@darold.net>

pg_autovacuum -
	Automatically performs vacuum
	by Matthew T. O'Connor <matthew@zeut.net>

pg_dumplo -
	Dump large objects
	by Karel Zak <zakkr@zf.jcu.cz>

pg_logger -
	Stdin-to-syslog gateway for PostgreSQL
	by Nathan Myers <ncm@nospam.cantrip.org>

pg_upgrade -
	Upgrade from previous PostgreSQL version without pg_dump/reload
	by Bruce Momjian <pgman@candle.pha.pa.us>

pgbench -
	TPC-B like benchmarking tool
	by Tatsuo Ishii <t-ishii@sra.co.jp>

pgcrypto -
	Cryptographic functions
	by Marko Kreen <marko@l-t.ee>

reindexdb - 
	Reindexes a database
	by Shaun Thomas <sthomas@townnews.com>

pgstattuple -
	A function returns the percentage of "dead" tuples in a table
	by Tatsuo Ishii <t-ishii@sra.co.jp>

rserv -
	Replication server
	by Vadim B. Mikheev <vadim4o@email.com>

rtree_gist -
	Support for emulating RTREE indexing in GiST
	by Oleg Bartunov <oleg@sai.msu.su> and Teodor Sigaev <teodor@stack.net>

seg -
	Confidence-interval datatype (GiST indexing example)
	by Gene Selkov, Jr. <selkovjr@mcs.anl.gov>

spi -
	Various trigger functions, examples for using SPI.

start-scripts - 
	Scripts for starting the server at boot time.
	
string -
	C-like input/output conversion routines for strings
	by Massimo Dal Zotto <dz@cs.unitn.it>

tablefunc -
	Examples of functions returning tables
	by Joe Conway <mail@joeconway.com>

tips/apache_logging -
	Getting Apache to log to PostgreSQL
	by Terry Mackintosh <terry@terrym.com>

tools -
	Assorted developer tools
	by Massimo Dal Zotto <dz@cs.unitn.it>

tsearch -
	Full-text-index support using GiST
	by Teodor Sigaev <teodor@stack.net> and Oleg Bartunov
	<oleg@sai.msu.su>.

userlock -
	User locks
	by Massimo Dal Zotto <dz@cs.unitn.it>

vacuumlo -
	Remove orphaned large objects
	by Peter T Mount <peter@retep.org.uk>

xml -
	Storing XML in PostgreSQL
	by John Gray <jgray@azuli.co.uk>