Age | Commit message (Collapse) | Author |
|
them within the various makefiles
with_tcl is still required for the src/pl/tcl language
|
|
|
|
|
|
|
|
needed). Some desultory const-ification of SPI interface to support this.
|
|
Gerhard Hintermayer, revised and documented by Tom Lane.
This patch also fixes a 'must fix' bug: libpgtcl's LISTEN/NOTIFY
support was broken by the recent changes to the PGnotify structure.
Guess that change wasn't quite so safe as we thought.
|
|
Everytime if I do PQconsumeInput (when the backend channel gets
readable) I check for the return value. (0 == error) and generate a
notification manually, e.g. fixed string connection_closed) and pass it to the
|
|
Everytime if I do PQconsumeInput (when the backend channel gets
readable) I check for the return value. (0 == error) and generate a
notification manually, e.g. fixed string connection_closed) and pass it to the
TCL event queue. The only other thing I had to do is to comment out removing
all pending events in PgStopNotifyEventSource whenever the connection was
unexpectedly closed (so the manually generated event will not be deleted).
A broken backend connection triggers a notify event to the client (fixed
notification string "connection_closed") so proper action can be taken to switch
to another database server etc. Remember that this is event driven. If you have
applications, that have idle database connections most of the time, you'll get
immediate feedback of a dying server. Upon connection to the server issue a
pg_notify for notify event "connection_closed" and whenever the backend crashes
(which it does do in very very rare cases) you get an event driven recovery. (of
course the Tcl-Event loop has to be processed). Issuing a notification
"connection_closed" on a still working database could be used for switching to
another db-server (which I've actually impelemented right now).
Gerhard Hintermayer
|
|
|
|
tests pass.
|
|
|
|
|
|
* Portions Copyright (c) 1996-2000, PostgreSQL, Inc
to all files copyright Regents of Berkeley. Man, that's a lot of files.
|
|
is poor coding style. I agree.
|
|
|
|
|
|
|
|
* It works under both Tcl 7.6 and Tcl 8.0 now. (The code claims to
work under Tcl 7.5 as well, but I have no way to test that ---
if anyone still cares, please check it with 7.5.)
* pg_listen suppresses extra LISTEN commands and correctly sends an
UNLISTEN when the last listen request for a relation is cancelled.
(Note this means it will not work with pre-6.4 backends, but that
was true already because it depends on the current libpq, which
only speaks protocol 2.0.)
* Added -error option to pg_result so that there's some way to find
out what you did wrong ;-)
* Miscellaneous cleanups of code comments and overenthusiastic #includes.
BTW, I bumped the package version number from 1.2 to 1.3. Is this
premature? Does someone run around and do that routinely before
each pgsql release?
regards, tom lane
|
|
|
|
pg_notifies statement is eliminated, and callbacks defined by
pg_listen are instead invoked automatically from the Tcl idle loop
whenever a NOTIFY message is received.
I have done only cursory testing, so there may be problems still
lurking (particularly on non-Unix machines?). But it seems to
work.
Patch is against today's cvs sources. Note that this will not work
with the 6.3.2 release since it depends on the new libpq.
The diffs are a bit large so I've gzipped them. A patch to update
libpgtcl.sgml is included too.
regards, tom lane
|
|
It is my hope that the following "patches" to libpgtcl get included
in the next release.
See the update to the README file to get a full description of the changes.
This version of libpgtcl is completely interpreter-safe, implements the
database connection handle as a channel (no events yet, but will make it
a lot easier to do fileevents on it in the future), and supports the SQL
"copy table to stdout" and "copy table from stdin" commands, with the
I/O being from and to the connection handle. The connection and result
handles are formatted in a way to make access to the tables more efficient.
|
|
|
|
indenting. Also static variable indenting.
|
|
|
|
Adds:
-lAttributes
Returns another format of the results attribute list. Per
attribute a sublist of {{attname} atttype attlen} is
returned and an empty string if no attributes where
received.
-numAttrs
Returns the number of attributes in the result.
|
|
|