Patches for LispWorks

Edi Weitz <[email protected]> 03 Jan 2003 00:21:11 +0100
Newsgroups gmane.lisp.uncommon-sql
Message-ID <[email protected]>
Hi!

Here are some small patches I needed for making UncommonSQL work with
LispWorks (4.2.7 professional) and PostgreSQL (7.2.1) on Linux.

Cheers,
Edi.



diff -ru /tmp/uncommonsql.orig/dbms/postgresql/ffi-lispworks.lisp /usr/local/lisp/source/uncommonsql/dbms/postgresql/ffi-lispworks.lisp
--- /tmp/uncommonsql.orig/dbms/postgresql/ffi-lispworks.lisp	Thu Feb  8 23:21:46 2001
+++ /usr/local/lisp/source/uncommonsql/dbms/postgresql/ffi-lispworks.lisp	Mon Dec 30 23:42:53 2002
@@ -77,7 +77,7 @@
 (fli:define-foreign-function 
     (pqerrormessage "PQerrorMessage" :source)
     ((conn psql-conn))
-  :result-type (:ef-mb-string :limit 4096)
+  :result-type (:reference (:ef-mb-string :external-format :latin-1 :limit 4096))
   :language :ansi-c)
 
 (fli:define-foreign-function 
@@ -109,7 +109,7 @@
     (pqfname "PQfname" :source)
     ((res psql-result)
      (field-num :int))
-  :result-type (:ef-mb-string :limit 4096)
+  :result-type (:reference (:ef-mb-string :external-format :latin-1 :limit 4096))
   :language :ansi-c)
 
 (fli:define-foreign-function 
@@ -136,19 +136,19 @@
 (fli:define-foreign-function 
     (pqcmdstatus "PQcmdStatus" :source)
     ((res psql-result))
-  :result-type (:ef-mb-string :limit 4096)
+  :result-type (:reference (:ef-mb-string :external-format :latin-1 :limit 4096))
   :language :ansi-c)
 
 (fli:define-foreign-function 
     (pqoidstatus "PQoidStatus" :source)
     ((res psql-result))
-  :result-type (:ef-mb-string :limit 4096)
+  :result-type (:reference (:ef-mb-string :external-format :latin-1 :limit 4096))
   :language :ansi-c)
 
 (fli:define-foreign-function 
     (pqcmdtuples "PQcmdTuples" :source)
     ((res psql-result))
-  :result-type (:ef-mb-string :limit 4096)
+  :result-type (:reference (:ef-mb-string :external-format :latin-1 :limit 4096))
   :language :ansi-c)
 
 (fli:define-foreign-function 
@@ -156,7 +156,7 @@
     ((res psql-result)
      (tup-num :int)
      (field-num :int))
-  :result-type (:ef-mb-string :limit 4096)
+  :result-type (:reference (:ef-mb-string :external-format :latin-1 :limit 4096))
   :language :ansi-c)
 
 (fli:define-foreign-function 



diff -ru /tmp/uncommonsql.orig/sql/objects.lisp /usr/local/lisp/source/uncommonsql/sql/objects.lisp
--- /tmp/uncommonsql.orig/sql/objects.lisp	Thu Aug  1 21:49:46 2002
+++ /usr/local/lisp/source/uncommonsql/sql/objects.lisp	Tue Dec 31 01:24:52 2002
@@ -1,5 +1,5 @@
 ;;; -*- Mode: Lisp -*-
-;;; $Id: objects.lisp,v 1.118 2002/08/01 19:49:46 craig Exp $
+;;; $Id: objects.lisp,v 1.126 2002/11/14 18:31:45 adam Exp $
 ;;; 
 ;;; Object Oriented interface for MaiSQL
 
@@ -322,8 +322,9 @@
 (defmethod slot-value-using-class ((class view-metaclass) instance slot-def)
   (declare (optimize (speed 3)))
   (unless *db-deserializing*
-    (let ((slot-name (%slot-def-name slot-def))
-          (slot-kind (view-class-slot-db-kind slot-def)))
+    (let* ((slot-name (%slot-def-name slot-def))
+           #+LispWorks (slot-def (clos:find-slot-definition slot-def class))
+           (slot-kind (view-class-slot-db-kind slot-def)))
       (when (and (eql slot-kind :join)
                  (not (slot-boundp instance slot-name)))
         (let ((*db-deserializing* t))
@@ -332,8 +333,9 @@
   (call-next-method))
 
 (defmethod (setf slot-value-using-class) (new-value (class view-metaclass) instance slot-def)
-  (let ((slot-name (%slot-def-name slot-def))
-        (slot-kind (view-class-slot-db-kind slot-def)))
+  (let* ((slot-name (%slot-def-name slot-def))
+         #+LispWorks (slot-def (clos:find-slot-definition slot-def class))
+         (slot-kind (view-class-slot-db-kind slot-def)))
     (unless (or (equal slot-name 'editing-context)
                 ;(eql slot-kind :join)
                 (eql slot-kind :virtual)