I have implemented a framework of encoding translation between the
backend and the frontend. Also I have added a new variable setting
command:
SET CLIENT_ENCODING TO 'encoding';
Other features include:
Latin1 support more 8 bit cleaness
See doc/README.mb for more details. Note that the pacthes are
against May 30 snapshot.
Tatsuo Ishii
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
Bug fixes:
PreparedStatement.setObject didn't handle short's
ResultSet.getDate() now handles null dates (returns null rather
than a NullPointerException)
ResultSetMetaData.getPrecision() now returns 0 for VARCHAR
New features:
Field now caches the typename->oid in a Hashtable to speed things
up. It removes the need for some unnecessary queries to the
backend.
PreparedStatement.toString() now returns the sql statement that
it will send to the backend. Before it did nothing.
DatabaseMetaData.getTypeInfo() now does something.
Bug fixes:
PreparedStatement.setObject didn't handle short's
ResultSet.getDate() now handles null dates (returns null rather
than a NullPointerException)
ResultSetMetaData.getPrecision() now returns 0 for VARCHAR
New features:
Field now caches the typename->oid in a Hashtable to speed things
up. It removes the need for some unnecessary queries to the
backend.
PreparedStatement.toString() now returns the sql statement that
it will send to the backend. Before it did nothing.
DatabaseMetaData.getTypeInfo() now does something.
+ Wed Jun 3 13:38:57 CEST 1998
+
+ - Made sqlca struct compatible with other systems.
+ - Give back a warning in case of truncation
+ - Changed the handling of OptimizableStmt since the old one broke
+ CREATE RULE
+ - Set library version to 2.3
+ - Set version to 2.3.3
+Wed May 20 10:46:48 CEST 1998
+
+ - Fixed handling of preprocessor directives and variable
+ initialization.
+ - Added enum datatype.
- Set version to 2.3.2
+
+ Wed May 6 16:09:45 CEST 1998
+
+ - Some more cleanups in the library.
+
+ Thu May 7 12:34:28 CEST 1998
+
+ - Made CONNECT and DISCONNECT statement more SQL3 compliant.
+ - Changed the API for the ECPGconnect function to be able to handle
+ hostnames and ports
+
+ Fri May 8 13:54:45 CEST 1998
+ - More changes to the parser. The connect statement now allows
+ ORACLE style logins.
+ - db-name is accepted in two ways:
+ - <dbname>[@<server>][:<port>]
+ - esql:postgresql://<server>[:<port>][/<dbname>]
+
+ Mon May 11 10:28:37 CEST 1998
+
+ - Added '? options' to connect call.
+ - Also allow USING as keyword for the password
+
+ Thu May 14 15:09:58 CEST 1998
+
+ - Changed preproc.y and pgc.l according to the parser changes in the
+ backend.
+
+ Fri May 15 09:55:21 CEST 1998
+
+ - Added connection_name handling
+
+
+ Mon May 18 10:33:58 CEST 1998
+
+ - Fixed some more bugs
+ - Set version to 2.3.1
+ - Set library version to 2.2
1. Rewritten libpq to allow asynchronous clients.
2. Implemented client side of cancel protocol in library,
and patched psql.c to send a cancel request upon SIGINT. The
backend doesn't notice it yet :-(
3. Implemented 'Z' protocol message addition and renaming of
copy in/out start messages. These are implemented conditionally,
ie, the client protocol version is checked; so the code should
still work with 1.0 clients.
4. Revised protocol and libpq sgml documents (don't have an SGML
compiler, though, so there may be some markup glitches here).
What remains to be done:
1. Implement addition of atttypmod field to RowDescriptor messages.
The client-side code is there but ifdef'd out. I have no idea
what to change on the backend side. The field should be sent
only if protocol >= 2.0, of course.
2. Implement backend response to cancel requests received as OOB
messages. (This prolly need not be conditional on protocol
version; just do it if you get SIGURG.)
3. Update libpq.3. (I'm hoping this can be generated mechanically
from libpq.sgml... if not, will do it by hand.) Is there any
other doco to fix?
4. Update non-libpq interfaces as necessary. I patched libpgtcl
so that it would compile, but haven't tested it. Dunno what
needs to be done with the other interfaces.
Have at it!
Tom Lane
Tue Apr 28 14:48:41 CEST 1998
- Put operator "->" back into parser. Note that :foo->bar means the
C term, but :foo ->bar means the operator "->".
Tue Apr 28 15:49:07 CEST 1998
- Added exec sql disconnect command.
- Allow varchar in C to be written in uppercase too.
- Added whenever option "do break;"
Wed Apr 29 09:17:53 CEST 1998
- Corrected parsing of C comments.
- Also allow C++ style comments.
- Make sure not found is only checked after commands that could
return it.
- Added error codes, see ecpgerror.h for details.
- Added "exec sql <TransactionStmt> release" as disconnect statement
for compatibility issues.
Thu Apr 30 10:42:10 CEST 1998
- Added a -t option to disable automatic transaction start.
- Added sqlerrd[] to sqlca struct.
- Give back number of tuples affect in sqlca.sqlerrd[2].
Thu Apr 30 13:36:02 CEST 1998
- Make the return code different in case of different errors.
Wed May 6 11:42:48 CEST 1998
- Free memory if possible
- Some bugfixes for bugs I found while changing the memory
allocation code
- Now able to fill complete array with one call (see test1.pgc for
an example)
- Set version to 2.3.0
- Set library version to 2.1
If PQfn() receives NOTICEs from the backend, it fails because there is no
provision to deal with them.
This patch (supplied by Anders Hammarquist <iko@netg.se> to me as Debian
maintainer of postgresql) cures the problem:
HP-UX (all versions) requires shared libraries to have execute
permission, and really needs them to be exactly mode 555 for
performance reasons. The standard configure/install procedure
installs libpq.sl as mode 644, which DOES NOT WORK.
The attached patch modifies the makefiles to distinguish
INSTL_LIB_OPTS (install mode for ordinary libraries) from
INSTL_SHLIB_OPTS (mode for shared libs), and adds a test
to configure to set INSTL_SHLIB_OPTS="-m 555" when on HP-UX.
+ Thu Apr 23 09:27:16 CEST 1998
+
+ - Also allow call in whenever statement with the same functionality
+ as do.
+
+ Thu Apr 23 12:29:28 CEST 1998
+
+ - Also rewrote variable declaration part. It is now possible to
+ declare more than one variable per line.
+ - Set version to 2.1.0
+
+ Fri Apr 24 13:50:15 CEST 1998
+
+ - Fixed some bugs.
+ - Set version to 2.1.1
Here's a fix for a tiny memory leak in PQsetdb/PQfinish.
(Analysis of a running program indicates there are several others, but
this is the only obvious one I saw in the code).
This fixes a problem in ResultSet.getDate() when the column is NULL
(reported by Vincent Partington <Vincent.Partington@nmg.nl>)
And fixes a problem with Field's (ResultSet.getObject() was proving to be
slow as it repetedly send queries for oid -> name mapping - fixed by
creating a cache. (reported by Mario Ellebrecht <ellebrec@nads.de>)