39 lines
1.9 KiB
Plaintext
39 lines
1.9 KiB
Plaintext
libpgtcl is a library that implements Tcl commands for front-end
|
|
clients to interact with the Postgresql 6.3 (and perhaps later)
|
|
backends. See libpgtcl.doc for details.
|
|
|
|
For an example of how to build a new tclsh to use libpgtcl, see the
|
|
directory ../bin/pgtclsh
|
|
|
|
Note this version is modified by NeoSoft to have the following additional
|
|
features:
|
|
|
|
1. Postgres connections are a valid Tcl channel, and can therefore
|
|
be manipulated by the interp command (ie. shared or transfered).
|
|
A connection handle's results are transfered/shared with it.
|
|
(Result handles are NOT channels, though it was tempting). Note
|
|
that a "close $connection" is now functionally identical to a
|
|
"pg_disconnect $connection", although pg_connect must be used
|
|
to create a connection.
|
|
|
|
2. Result handles are changed in format: ${connection}.<result#>.
|
|
This just means for a connection 'pgtcl0', they look like pgtcl0.0,
|
|
pgtcl0.1, etc. Enforcing this syntax makes it easy to look up
|
|
the real pointer by indexing into an array associated with the
|
|
connection.
|
|
|
|
3. I/O routines are now defined for the connection handle. I/O to/from
|
|
the connection is only valid under certain circumstances: following
|
|
the execution of the queries "copy <table> from stdin" or
|
|
"copy <table> to stdout". In these cases, the result handle obtains
|
|
an intermediate status of "PGRES_COPY_IN" or "PGRES_COPY_OUT". The
|
|
programmer is then expected to use Tcl gets or read commands on the
|
|
database connection (not the result handle) to extract the copy data.
|
|
For copy outs, read until the standard EOF indication is encountered.
|
|
For copy ins, puts a single terminator (\.). The statement for this
|
|
would be
|
|
puts $conn "\\." or puts $conn {\.}
|
|
In either case (upon detecting the EOF or putting the `\.', the status
|
|
of the result handle will change to "PGRES_COMMAND_OK", and any further
|
|
I/O attempts will cause a Tcl error.
|