[Openmcl-devel] [CLSQL] Slime, CLSQL, and reader macros

Gary Byers gb at clozure.com
Thu Apr 1 11:22:05 PDT 2010


Without knowing what (FILE-ENABLE-SQL-READER-SYNTAX) does, how would anyone
know what the problem is ?  (I can guess that it tries to enable some reader
macros, but I don't know how it tries to do that.)

If whatever the problem is might be a bug in CCL 1.3, have you tried 1.4 to see
if the problem persists ?

On Thu, 1 Apr 2010, Patrick May wrote:

> [ Adding OpenMCL-devel, since CCL seems to be involved somehow in this problem. ]
>
> On Apr 1, 2010, at 10:32 AM, Nathan Bird wrote:
>> On 4/1/2010 9:41 AM, Patrick May wrote:
>>>
>>> 	My environment is OS X 10.6.3, Clozure 1.3-r12755M, PostgreSQL 8.4.1, and CLSQL 5.0.5.
>>>
>>> 	My problem is with the CLSQL square bracket syntax in Slime.  If I run the code below from a REPL started at the command line, it works fine.  I can use either the file-enable-sql-reader-syntax or the locally-enable-sql-reader-syntax / restore-sql-reader-syntax-state pair fine.  When I evaluate the same code in Slime with C-x C-e or C-c C-r, however, I get this error when defining add-customer:
>>>
>>> ;Compiler warnings :
>>> ;   In ADD-CUSTOMER: Undeclared free variable [=
>>> ;   In ADD-CUSTOMER: Undeclared free variable [ID]
>>> ;   In ADD-CUSTOMER: Undeclared free variable ID]
>>>
>>> and this error when trying to add a customer object:
>>>
>>> Unbound variable: [=
>>>   [Condition of type UNBOUND-VARIABLE]
>>>
>>> This happens with either way of enabling the square bracket syntax.
>>>
>>> 	Am I misunderstanding something fundamental about Slime?  Has anyone managed to use Slime for CLSQL development with the square bracket syntax?
>>
>> I've only really worked with SBCL so there might be something different
>> in the implementations, but yes the square bracket reader syntax works
>> fine for me under slime.
>
> 	Interesting.  I tried this with SBCL and it worked.  Why would ccl64 behave differently?  (Code below.)
>
> Thanks,
>
> Patrick
>
> (in-package :common-lisp-user)
>
> (defpackage :clsql-testing
> (:use :common-lisp
>       :clsql))
>
> (in-package :clsql-testing)
>
> (file-enable-sql-reader-syntax)
>
> ;(locally-enable-sql-reader-syntax)
>
> (def-view-class customer ()
> ((id :db-kind :key
>      :db-constraints :not-null
>      :initarg :id
>      :reader id
>      :type integer)
>  (name :db-constraints :not-null
>        :initarg :name
>        :reader name
>        :type string)
>  (phone-number :db-constraints :not-null
>                :initarg :phone-number
>                :accessor phone-number
>                :type string))
> (:base-table "test_customer"))
>
> (defconstant +id-sequence+ "id_sequence")
>
> (defun add-customer (name phone-number)
> "Add a customer."
> (let ((id (sequence-next +id-sequence+)))
>   (update-records-from-instance
>    (make-instance 'customer
>                   :id id
>                   :name name
>                   :phone-number phone-number))
>   (first (select 'customer :where [= [id] id] :flatp t))))
>
> (connect '("localhost" "db-name" "user" "password")
>        :database-type :postgresql-socket
>        :if-exists :new
>        :pool t)
>
> (defparameter customer-foo (add-customer "Test Customer Foo" "0123456789"))
> (id customer-foo)
>
> ;(restore-sql-reader-syntax-state)
> (disconnect-pooled)
>
>



More information about the Openmcl-devel mailing list