Parent Directory | Revision Log
|Links to HEAD:||(view) (annotate)|
Don't flush the network stream in SEND-PACKET, because it slows down API calls that have multiple SEND-PACKET calls in them. From email@example.com.
Make sure we consume the ReadyForQuery packet that is generated when closing a prepared statement or portal, or the packet can be misinterpreted by a later query, leading to data loss. Fix from Robert J. Macomber.
Add an ABORT keyword argument to PG-DISCONNECT (from Robert J. Macomber <firstname.lastname@example.org>), as per CL:CLOSE. "I've run into a problem with pg-disconnect if something abnormal happens to the database connection -- if the database goes away for a restart while pg has a connection open, for example. When this happens, pg-disconnect fails, and the socket file descriptor is left open (presumably for a finalizer to clean up), also raising a new error from the unwind-protect in with-pg-connection. To guard against the possibility, I've added an :abort parameter to pg-disconnect, like cl:close has, and made with-pg-connection call it with :abort t if the body exits abnormally, in the same way that with-open-file operates. When :abort is true, the modified pg-disconnect closes the database connection ungracefully, including making the close call abort (otherwise, sbcl at keast tries to flush the stream, raising another error if the database isn't there anymore)."
Allow encoding used for socket communication with the backend to be specified as a keyword argument to PG-CONNECT, for cases where rebinding *PG-CLIENT-ENCODING* is inconvenient. Add a simple test for encoding support. (From Attila Lendvai <email@example.com>)
Fixes to the prepared statement support, in order to implement precise error reporting. Deadlocks were possible with previous version, where pg-dot-lisp would be blocked waiting for input from the backend that never arrived. Also some code cleanups.
Allow NULL values for bound variables in prepared statements. Bug pointed out by Steve Purcell <firstname.lastname@example.org>.
Disabling buffering of the socket stream on CLISP greatly improves performance.
Make the v3 protocol ERROR-RESPONSE inherit from BACKEND-ERROR.
Remove the limit on maximum message size when using the v3 protocol (from Johan Ur Riise <email@example.com>).
Fix problems with text data in prepared statements. Unlike the rest of the protocol, strings are not sent NUL-terminated.
Improved documentation and a basic example for the use of execution plans (prepared statements).
Fix bug in PG-CLOSE-STATEMENT (thanks to firstname.lastname@example.org).
Fixes to client-encoding support, based on a bug report from Johan Ur Riise <email@example.com>. Not tested very heavily (but the tests work in UTF-8 mode with unicode-enabled SBCL and CLISP).
Modified sbcl unicode support, works for me. Moved requires into asdf package, otherwise we get asdf package problems, unknown if it works with other lisps
Make PGLO-READ a generic function, with specializations on the v2 and v3 protocols. The difference is necessary because the v2 protocol reads large-object data in text, whereas the v3 protocol changed to use a binary format.
Three fixes from Björn Lindberg <firstname.lastname@example.org>: - Two trivial bugs with regards to use with Allegro - Handling of the special timestamp values infinity and -infinity. They gave an error, but now returns the symbols :INFINITY and :-INFINITY respectively. - A bug in the version 3 of the protocol, where it would return NIL for fields in the database containing the empty string, rather than an empty string.
Corrected wrong code for Close Complete
fixed extended queries for newer versions of postgreSQL, they need the sync message
Implement binary-mode transfers for large-object operations in the v3 protocol. The v2 protocol transfers arguments in binary mode, but the v3 protocol requires the client to specify for each argument of a FunctionCall whether it is encoded as binary or as text. - add possibility to send (unsigned-byte 8) arguments to function calls - add a method READ-OCTETS-FROM-PACKET that reads raw octets - make PG-IMPORT and PG-EXPORT use binary I/O - PGLO-READ reads data in binary - change the large-object tests to use binary I/O (fixes the pglo test)
add a file that does a manual load of pg
Comment-only patch: mark the places in the v3-protocol code where charset encoding problems will have to be addressed. It's probably not worth going through the v2-protocol code to fix these issues, since it has too many places where READ-CSTRING is confused with READ-OCTET-ARRAY.
A provisional fix for large object support: the test case (whose large-object component only runs on CMUCL) was resetting the connection during the IMPORT/EXPORT test, due to an unexpected #\V packet (FunctionCallResponse) in DO-FOLLOWUP-QUERY. It's still not clear why a FunctionCallResponse should be received anywhere other than in FN. This test is currently failing due to CR -> "\012" corruption that I haven't debugged.
- add md5 authentication (thanks to Brian Mastenbrook). Uses Pierre Mai's portable md5.lisp library, that has been added to the project (with extra EVAL-WHENness to please OpenMCL and ACL). Tested with CMUCL, SBCL, OpenMCL, CLISP, ACL 6.1. ABCL does not compile md5.lisp, probably for more EVAL-WHEN reasons. Only tested with PostgreSQL version 7.4.
now COPY IN/OUT actually works, also created test-case
- fix bogus type declaration - remove bogus use of CMUCL's finalization (can't reference dying object from the finalizer)
untested COPY IN/OUT code. I am not happy about how this looks...
- improvements to the system-dependent functionality: OpenMCL is able to use a local connection to the backend; most implementations resignal connection errors as a postgres-error. - fixes to the lowlevel code
- fix to the lowlevel factorization - modify parameter handling in v3 protocol to add parameters to the connection object, instead of issuing a warning
More factorization of lowlevel functions between v2 and v3 protocols.
pg.lisp: - make print-object more robust - added documentation to the defgenerics - added some declarations v3-protocol.lisp: - make errors restartable as we hope to sync again with the db - return errors from read-packet because sometimes it is the only clue we get that there is no more output - replaced arefs with the faster elt - unified query followup into do-followup-query - added pbe (prepare bind execute) support
Integrate Peter Van Eynde's v3 protocol support: - create PGCON-V2 and PGCON-V3 classes - PG-CONNECT attempts to connect using v3 protocol, and falls back to v2 protocol for older backends; return a PGCON-V2 or PGCON-V3 object - PG-EXEC and FN and PG-DISCONNECT are generic functions that dispatch on the connection type - protocol code split into v2-protocol.lisp and v3-protocol.lisp TBD: cleaning up the notification & error reporting support, and factorizing more code between the two protocol versions. Also split code out into multiple files: - large-object support - metainformation about databases - parsing and type coercion support - utility functions and macros
This form allows you to request diffs between any two revisions of this file. For each of the two "sides" of the diff, select a symbolic revision name using the selection box, or choose 'Use Text Field' and enter a numeric revision.
|Powered by ViewVC 1.1.5|