+(defun read-field (socket type)
+ (let* ((length (read-socket-value 'int32 socket))
+ (result (make-string (- length 4))))
+ (read-socket-sequence result socket)
+ (case type
+ (:int
+ (parse-integer result))
+ (:double
+ (let ((*read-default-float-format* 'double-float))
+ (read-from-string result)))
+ (t
+ result))))
+
+(defun read-cursor-row (cursor field-types)