SQL Reader Syntax
Marcus Pearce <[email protected]> Tue, 19 Sep 2006 18:43:16 +0100 (BST)
| Newsgroups | gmane.lisp.clsql.devel |
|---|---|
| Message-ID | <Pine.LNX.4.62.0609191801580.6510@elgar> |
This message is in MIME format. The first part should be readable text,
while the remaining parts are likely unreadable without MIME-aware tools.
--8323328-1520717603-1158687796=:6510
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
In CLSQL 3.7.1, the functions for turning the sql reader syntax on and off
appear to be broken. The following transcript shows, for example, that
once enabled the syntax is never disabled:
CL-USER> (defun print-state ()
(flet ((print-var (s v) (format t "~&~28A: ~A" s v)))
(print-var 'clsql-sys::*original-reader-enter*
clsql-sys::*original-reader-enter*)
(print-var 'clsql-sys::*original-reader-exit*
clsql-sys::*original-reader-exit*)
(print-var 'clsql-sys::*restore-sql-reader-syntax*
clsql-sys::*restore-sql-reader-syntax*)
(print-var '(get-macro-character #\[) (get-macro-character #\[))
(print-var '(get-macro-character #\]) (get-macro-character #\]))))
PRINT-STATE
CL-USER> (print-state)
*ORIGINAL-READER-ENTER* : NIL
*ORIGINAL-READER-EXIT* : NIL
*RESTORE-SQL-READER-SYNTAX* : NIL
(GET-MACRO-CHARACTER [) : NIL
(GET-MACRO-CHARACTER ]) : NIL
NIL
CL-USER> (progn (clsql:enable-sql-reader-syntax) (print-state))
*ORIGINAL-READER-ENTER* : NIL
*ORIGINAL-READER-EXIT* : NIL
*RESTORE-SQL-READER-SYNTAX* : T
(GET-MACRO-CHARACTER [) : #<FUNCTION CLSQL-SYS::SQL-READER-OPEN>
(GET-MACRO-CHARACTER ]) : #<FUNCTION SB-IMPL::READ-RIGHT-PAREN>
NIL
CL-USER> (progn (clsql:disable-sql-reader-syntax) (print-state))
*ORIGINAL-READER-ENTER* : NIL
*ORIGINAL-READER-EXIT* : NIL
*RESTORE-SQL-READER-SYNTAX* : NIL
(GET-MACRO-CHARACTER [) : #<FUNCTION CLSQL-SYS::SQL-READER-OPEN>
(GET-MACRO-CHARACTER ]) : #<FUNCTION SB-IMPL::READ-RIGHT-PAREN>
NIL
CL-USER> (progn (clsql:enable-sql-reader-syntax) (print-state))
*ORIGINAL-READER-ENTER* : #<FUNCTION CLSQL-SYS::SQL-READER-OPEN>
*ORIGINAL-READER-EXIT* : #<FUNCTION SB-IMPL::READ-RIGHT-PAREN>
*RESTORE-SQL-READER-SYNTAX* : T
(GET-MACRO-CHARACTER [) : #<FUNCTION CLSQL-SYS::SQL-READER-OPEN>
(GET-MACRO-CHARACTER ]) : #<FUNCTION SB-IMPL::READ-RIGHT-PAREN>
NIL
CL-USER> (progn (clsql:disable-sql-reader-syntax) (print-state))
*ORIGINAL-READER-ENTER* : NIL
*ORIGINAL-READER-EXIT* : #<FUNCTION SB-IMPL::READ-RIGHT-PAREN>
*RESTORE-SQL-READER-SYNTAX* : NIL
(GET-MACRO-CHARACTER [) : #<FUNCTION CLSQL-SYS::SQL-READER-OPEN>
(GET-MACRO-CHARACTER ]) : #<FUNCTION SB-IMPL::READ-RIGHT-PAREN>
NIL
CL-USER>
The attached patch fixes the logic as follows. The syntax is initially
disabled. If it is enabled, %ENABLE-SQL-READER-SYNTAX (called via
{LOCALLY-,}ENABLE-SQL-READER-SYNTAX or RESTORE-SQL-READER-SYNTAX-STATE)
stores the original reader macro functions for #\[ and #\] and sets them
to new values. Subsequent calls have no effect unless preceded by a call
to %DISABLE-SQL-READER-SYNTAX (via {LOCALLY-,}DISABLE-SQL-READER-SYNTAX or
RESTORE-SQL-READER-SYNTAX-STATE) which simply restores the reader macro
functions for #\[ and #\] to their original values.
With the patch applied, the test suite runs without failure on SBCL
0.9.16, Linux/x86, Postgresql 8.0.8.
Cheers,
Marcus
--8323328-1520717603-1158687796=:6510
Content-Type: TEXT/PLAIN; charset=US-ASCII; name=syntax.diff
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.LNX.4.62.0609191843160.6510@elgar>
Content-Description:
Content-Disposition: attachment; filename=syntax.diff
LS0tIHN5bnRheC5saXNwCTIwMDYtMDktMTkgMTg6MDA6NTAuMDAwMDAwMDAw
ICswMTAwDQorKysgc3ludGF4LW5ldy5saXNwCTIwMDYtMDktMTkgMTg6MzY6
MzEuMDAwMDAwMDAwICswMTAwDQpAQCAtNDUsOSArNDUsOCBAQA0KICAgICAo
JWRpc2FibGUtc3FsLXJlYWRlci1zeW50YXgpKSkNCiANCiAoZGVmdW4gJWRp
c2FibGUtc3FsLXJlYWRlci1zeW50YXggKCkNCi0gICh3aGVuICpvcmlnaW5h
bC1yZWFkZXItZW50ZXIqDQotICAgIChzZXQtbWFjcm8tY2hhcmFjdGVyICpz
cWwtbWFjcm8tb3Blbi1jaGFyKiAqb3JpZ2luYWwtcmVhZGVyLWVudGVyKikp
DQotICAoc2V0ZiAqb3JpZ2luYWwtcmVhZGVyLWVudGVyKiBuaWwpDQorICAo
c2V0LW1hY3JvLWNoYXJhY3RlciAqc3FsLW1hY3JvLW9wZW4tY2hhciogKm9y
aWdpbmFsLXJlYWRlci1lbnRlciopDQorICAoc2V0LW1hY3JvLWNoYXJhY3Rl
ciAqc3FsLW1hY3JvLWNsb3NlLWNoYXIqICpvcmlnaW5hbC1yZWFkZXItZXhp
dCopDQogICAodmFsdWVzKSkNCiANCiANCkBAIC02OSwxMCArNjgsMTMgQEAN
CiAgICAgKCVlbmFibGUtc3FsLXJlYWRlci1zeW50YXgpKSkNCiANCiAoZGVm
dW4gJWVuYWJsZS1zcWwtcmVhZGVyLXN5bnRheCAoKQ0KLSAgKHVubGVzcyAq
b3JpZ2luYWwtcmVhZGVyLWVudGVyKg0KLSAgICAoc2V0ZiAqb3JpZ2luYWwt
cmVhZGVyLWVudGVyKiAoZ2V0LW1hY3JvLWNoYXJhY3RlciAqc3FsLW1hY3Jv
LW9wZW4tY2hhciopKSkNCi0gIChzZXQtbWFjcm8tY2hhcmFjdGVyICpzcWwt
bWFjcm8tb3Blbi1jaGFyKiAjJ3NxbC1yZWFkZXItb3BlbikNCi0gIChlbmFi
bGUtc3FsLWNsb3NlLXN5bnRheCkNCisgICh1bmxlc3MgKGVxIChnZXQtbWFj
cm8tY2hhcmFjdGVyICpzcWwtbWFjcm8tb3Blbi1jaGFyKikgIydzcWwtcmVh
ZGVyLW9wZW4pDQorICAgIChzZXRmICpvcmlnaW5hbC1yZWFkZXItZW50ZXIq
IChnZXQtbWFjcm8tY2hhcmFjdGVyICpzcWwtbWFjcm8tb3Blbi1jaGFyKikp
DQorICAgIChzZXQtbWFjcm8tY2hhcmFjdGVyICpzcWwtbWFjcm8tb3Blbi1j
aGFyKiAjJ3NxbC1yZWFkZXItb3BlbikpDQorICAodW5sZXNzIChlcSAoZ2V0
LW1hY3JvLWNoYXJhY3RlciAqc3FsLW1hY3JvLWNsb3NlLWNoYXIqKSANCisg
ICAgICAgICAgICAgIChnZXQtbWFjcm8tY2hhcmFjdGVyICNcKSkpDQorICAg
IChzZXRmICpvcmlnaW5hbC1yZWFkZXItZXhpdCogKGdldC1tYWNyby1jaGFy
YWN0ZXIgKnNxbC1tYWNyby1jbG9zZS1jaGFyKikpDQorICAgIChzZXQtbWFj
cm8tY2hhcmFjdGVyICpzcWwtbWFjcm8tY2xvc2UtY2hhciogKGdldC1tYWNy
by1jaGFyYWN0ZXIgI1wpKSkpDQogICAodmFsdWVzKSkNCiANCiAoZGVmbWFj
cm8gcmVzdG9yZS1zcWwtcmVhZGVyLXN5bnRheC1zdGF0ZSAoKQ0KQEAgLTEw
MiwxOCArMTA0LDYgQEANCiAJCSA6bWVzc2FnZSAoZm9ybWF0IG5pbCAiRXJy
b3IgfkEgb2NjdXJlZCB3aGlsZSBhdHRlbXB0aW5nIHRvIHBhcnNlICd+QScg
YXQgZmlsZSBwb3NpdGlvbiB+QSINCiAJCQkJICAoc3FsLXVzZXItZXJyb3It
bWVzc2FnZSBjKSBzcWxsaXN0IChmaWxlLXBvc2l0aW9uIHN0cmVhbSkpKSkp
KSkpDQogDQotKGRlZnVuIGRpc2FibGUtc3FsLWNsb3NlLXN5bnRheCAoKQ0K
LSAgIkludGVybmFsIGZ1bmN0aW9uIHRoYXQgZGlzYWJsZXMgdGhlIGNsb3Nl
IHN5bnRheCB3aGVuIGxlYXZpbmcNCi0gIHNxbCBjb250ZXh0LiINCi0gIChz
ZXQtbWFjcm8tY2hhcmFjdGVyICpzcWwtbWFjcm8tY2xvc2UtY2hhciogKm9y
aWdpbmFsLXJlYWRlci1leGl0KikNCi0gIChzZXRmICpvcmlnaW5hbC1yZWFk
ZXItZXhpdCogbmlsKSkNCi0NCi0oZGVmdW4gZW5hYmxlLXNxbC1jbG9zZS1z
eW50YXggKCkNCi0gICJJbnRlcm5hbCBmdW5jdGlvbiB0aGF0IGVuYWJsZXMg
Y2xvc2Ugc3ludGF4IHdoZW4gZW50ZXJpbmcgU1FMDQotICBjb250ZXh0LiIN
Ci0gIChzZXRmICpvcmlnaW5hbC1yZWFkZXItZXhpdCogKGdldC1tYWNyby1j
aGFyYWN0ZXIgKnNxbC1tYWNyby1jbG9zZS1jaGFyKikpDQotICAoc2V0LW1h
Y3JvLWNoYXJhY3RlciAqc3FsLW1hY3JvLWNsb3NlLWNoYXIqIChnZXQtbWFj
cm8tY2hhcmFjdGVyICNcKSkpKQ0KLQ0KIChkZWZ1biBnZW5lcmF0ZS1zcWwt
cmVmZXJlbmNlICgmcmVzdCBhcmdsaXN0KQ0KICAgKGNvbmQgKCg9IChsZW5n
dGggYXJnbGlzdCkgMSkJOyBzdHJpbmcsIHRhYmxlIG9yIGF0dHJpYnV0ZQ0K
IAkgKGlmIChzdHJpbmdwIChjYXIgYXJnbGlzdCkpDQo=
--8323328-1520717603-1158687796=:6510
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
_______________________________________________
CLSQL-Devel mailing list
[email protected]
http://lists.b9.com/mailman/listinfo/clsql-devel
--8323328-1520717603-1158687796=:6510--