[pg-cvs] CVS update: pg/parsers.lisp pg/sysdep.lisp pg/v3-protocol.lisp
Eric Marsden
emarsden at common-lisp.net
Sun Jul 17 13:46:51 UTC 2005
Update of /project/pg/cvsroot/pg
In directory common-lisp.net:/tmp/cvs-serv32538
Modified Files:
parsers.lisp sysdep.lisp v3-protocol.lisp
Log Message:
Three fixes from Björn Lindberg <d95-bli at nada.kth.se>:
- 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.
Date: Sun Jul 17 15:46:50 2005
Author: emarsden
Index: pg/parsers.lisp
diff -u pg/parsers.lisp:1.6 pg/parsers.lisp:1.7
--- pg/parsers.lisp:1.6 Tue Sep 7 14:52:19 2004
+++ pg/parsers.lisp Sun Jul 17 15:46:50 2005
@@ -170,9 +170,14 @@
;; for a fix for timestamp format in PostgreSQL 7.3 (with or without
;; tz, with or without milliseconds).
(defun timestamp-parser (str)
- (multiple-value-bind (year month day hours minutes seconds)
- (parse-timestamp str)
- (encode-universal-time seconds minutes hours day month year)))
+ ;; Test for the special values 'infinity' and '-infinity'
+ (cond ((digit-char-p (schar str 0))
+ (multiple-value-bind (year month day hours minutes seconds)
+ (parse-timestamp str)
+ (encode-universal-time seconds minutes hours day month year)))
+ ((equal str "infinity") :infinity)
+ ((equal str "-infinity") :-infinity)
+ (t (error "Unknown special timestamp value ~A" str))))
(defun precise-timestamp-parser (str)
(multiple-value-bind (year month day hours minutes seconds milliseconds)
Index: pg/sysdep.lisp
diff -u pg/sysdep.lisp:1.7 pg/sysdep.lisp:1.8
--- pg/sysdep.lisp:1.7 Wed May 4 22:51:35 2005
+++ pg/sysdep.lisp Sun Jul 17 15:46:50 2005
@@ -1,7 +1,7 @@
;;; sysdep.lisp -- system-dependent parts of pg-dot-lisp
;;;
;;; Author: Eric Marsden <emarsden at laas.fr>
-;;; Time-stamp: <2004-04-23 emarsden>
+;;; Time-stamp: <2005-07-17 emarsden>
;;
;;
@@ -261,7 +261,6 @@
end)
-;; there seems to be a bug in ECL's binary socket streams; data is corrupted
#+ecl
(defun socket-connect (port host)
(declare (type integer port))
@@ -320,8 +319,9 @@
(%sysdep "convert string to bytes"
#+(and clisp unicode)
(ext:convert-string-to-bytes string encoding)
- #+(and acl ics)
- (excl:string-to-octets string :external-format encoding)
+ #+(and allegro ics)
+ (excl:string-to-octets string :null-terminate nil
+ :external-format encoding)
#+(and :sbcl :sb-unicode)
(sb-ext:string-to-octets string :external-format (sbcl-ext-form-from-client-encoding encoding))
#+(or cmu sbcl gcl ecl)
@@ -333,8 +333,8 @@
(%sysdep "convert octet-array to string"
#+(and clisp unicode)
(ext:convert-string-from-bytes bytes encoding)
- #+(and acl ics)
- (ext:octets-to-string bytes :external-format encoding)
+ #+(and allegro ics)
+ (excl:octets-to-string bytes :external-format encoding)
#+(and :sbcl :sb-unicode)
(sb-ext:octets-to-string bytes :external-format encoding)
;; for implementations that have no support for character
Index: pg/v3-protocol.lisp
diff -u pg/v3-protocol.lisp:1.15 pg/v3-protocol.lisp:1.16
--- pg/v3-protocol.lisp:1.15 Mon Sep 20 00:32:33 2004
+++ pg/v3-protocol.lisp Sun Jul 17 15:46:50 2005
@@ -270,8 +270,6 @@
"Reads a string of LENGTH characters from the packet")
(:method ((packet pg-packet) (length (eql -1)))
nil)
- (:method ((packet pg-packet) (length (eql 0)))
- nil)
(:method ((packet pg-packet) (length integer))
(when (< length 0)
(error "length cannot be negative. is: ~S"
More information about the Pg-cvs
mailing list