<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">Gary, thanks, I was responding to a note from the 2010 archives, about some CLSQL macros for a special SQL query language, which used an altered readtable, swapping it in and out on demand.  In slime, the behavior didn’t work in 2010, and it still doesn’t in 2015 in CCL running in slime.  The 2010 notes were useful for me to identify and deal with the issue, so I responded with the aim of being helpful to anyone searching now or in the future for similar issues.<div class=""><br class=""></div><div class="">I’ve just re-picked up LISP after a lengthy time away from it, and I have little sense of what any currently relevant environments and tools are - it may be that commenting on CLSQL running in slime is quaint, or sad, or still perfectly relevant - I really don’t know.  It’s working for me, anyway.</div><div class=""><br class=""></div><div class="">- Bob </div><div class=""><div apple-content-edited="true" class=""><div class=""><br class=""></div><div class="">Bob Cram</div><div class="">Robert Cram Construction</div><div class=""><a href="http://www.robertcramconstruction.com" class="">www.robertcramconstruction.com</a></div><div class="">415-613-8319</div><div class=""><a href="mailto:robert@robertcramconstruction.com" class="">robert@robertcramconstruction.com</a></div><div class="">CA LIC 965300</div>

</div>
<br class=""><div><blockquote type="cite" class=""><div class="">On Mar 5, 2015, at 10:13 AM, Gary Byers <<a href="mailto:gbyersnm@gmail.com" class="">gbyersnm@gmail.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div dir="ltr" class=""><div class=""><div class=""><div class="">I'm not sure that i  remember the specific problem that you're referring to.<br class=""><br class=""></div>In CCL, many special variables (including those that affect the reader and printer have thread-local bindings.)  I understand that this may not be what one wants in every case , but if your code is intentionally creating threads, having the value of e.g. *readtable* change in all threads becausee of something done in one thread can be undesirable and hard to track down and debug, and I think that there is at least a strong argument that CCL's behavior in this case is a reasonable default.<br class=""><br class=""></div>I  don't like or use SLME and I don't know if its behavior has changed since the last time that I tried to, but when I did I found that the default behavior of editor commands which try to read a selection from an editor buffer and execute the expression that was read is to execute that expression in a newly created thread (with a new set of dynamic bindings)  I can't think of any way in which this behavor can be callled reasonable.)<br class=""><br class=""></div>If I ever knew how to override this behavior, I've long since forgotten.  I understand that many people might find my solution - avoiding SLIME - a bit drastic, but I I don't exactly miss SLIME.<br class=""><br class=""></div><div class="gmail_extra"><br class=""><div class="gmail_quote">On Wed, Mar 4, 2015 at 11:32 PM, Robert Cram <span dir="ltr" class=""><<a href="mailto:robert@robertcramconstruction.com" target="_blank" class="">robert@robertcramconstruction.com</a>></span> wrote:<br class=""><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word" class="">I realize that this is an old thread, but the issue just came up for me.  Perhaps it was answered or solved later, but I didn’t find so.<div class=""><br class=""></div><div class="">A fix of some sort, in some versions of Clozure and emacs/slime, is this line:</div><div class=""><br class=""></div><div class=""><div style="margin:0px;font-size:11px;font-family:Menlo" class="">(setf clsql-sys::*original-readtable* nil)</div><div style="margin:0px;font-size:11px;font-family:Menlo" class=""><br class=""></div><div style="margin:0px;font-size:11px;font-family:Menlo" class="">which resets the clsql readtable caching mechanism, which is unaware of the slime/mcl/ccl thread-specific readtable issue.</div><div style="margin:0px;font-size:11px;font-family:Menlo" class=""><br class=""></div><div style="margin:0px;font-size:11px;font-family:Menlo" class="">Used like this:</div><div style="margin:0px;font-size:11px;font-family:Menlo" class=""><br class=""></div><div style="margin:0px;font-size:11px;font-family:Menlo" class="">;; Reset the mechanism.</div><div style="margin:0px;font-size:11px;font-family:Menlo" class=""><div style="margin:0px" class="">(setf clsql-sys::*original-readtable* nil)</div><div class=""><br class=""></div><div class="">;; Alter the read table.</div><div class="">(clsql::enable-sql-reader-syntax)</div></div><div style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(215,57,30)" class=""><span style="" class=""><br class=""></span></div><div style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(215,57,30)" class=""><span style="" class="">;; Do whatever special syntax stuff you need to do:</span></div><div style="margin:0px;font-size:11px;font-family:Menlo" class=""><span style="" class="">(</span><span style="color:rgb(208,60,255)" class="">defun</span><span style="" class=""> </span><font color="#5e34ff" class="">blah </font><span style="" class="">(blah)</span></div><div style="margin:0px;font-size:11px;font-family:Menlo" class="">  (clsql::select ‘blah</div><div style="margin:0px;font-size:11px;font-family:Menlo" class="">                 <span style="color:#ef76ee" class="">:where</span> [= [ ‘blah ‘blah]</div><div style="margin:0px;font-size:11px;font-family:Menlo" class="">                 blah])</div><div style="margin:0px;font-size:11px;font-family:Menlo" class="">  )</div><div class="">;; Disable the syntax….</div><div class=""><br class=""></div><div class="">The point is that killing the cache needs to happen in the same evaluation as the code with the special syntax.</div><div class=""><br class=""></div><div class="">I make no claim except that the original error goes away.</div><div class=""><br class=""></div><div class=""><br class=""></div><div class="">
<div class="">Bob Cram</div><div class="">Robert Cram Construction</div><div class=""><a href="http://www.robertcramconstruction.com/" target="_blank" class="">www.robertcramconstruction.com</a></div><div class=""><a href="tel:415-613-8319" value="+14156138319" target="_blank" class="">415-613-8319</a></div><div class=""><a href="mailto:robert@robertcramconstruction.com" target="_blank" class="">robert@robertcramconstruction.com</a></div><div class="">CA LIC 965300</div>

</div>
<br class=""></div></div><br class="">_______________________________________________<br class="">
Openmcl-devel mailing list<br class="">
<a href="mailto:Openmcl-devel@clozure.com" class="">Openmcl-devel@clozure.com</a><br class="">
<a href="https://lists.clozure.com/mailman/listinfo/openmcl-devel" target="_blank" class="">https://lists.clozure.com/mailman/listinfo/openmcl-devel</a><br class="">
<br class=""></blockquote></div><br class=""></div>
</div></blockquote></div><br class=""></div></body></html>