r10039: * BUGS: New file. Document suspected SIGPIPE
authorKevin M. Rosenberg <kevin@rosenberg.net>
Tue, 28 Sep 2004 05:03:40 +0000 (05:03 +0000)
committerKevin M. Rosenberg <kevin@rosenberg.net>
Tue, 28 Sep 2004 05:03:40 +0000 (05:03 +0000)
        interaction between SBCL and libpq used in
        postgresql backend.
        * sql/package.lisp: Export *default-caching*
        * sql/oodml.lisp: Use *default-caching* to
        control default caching behavior.

BUGS [new file with mode: 0644]
ChangeLog
sql/oodml.lisp
sql/package.lisp

diff --git a/BUGS b/BUGS
new file mode 100644 (file)
index 0000000..2f96768
--- /dev/null
+++ b/BUGS
@@ -0,0 +1,9 @@
+1. SBCL/Postgresql Interaction
+
+Gabor Melis reported an interaction with SBCL and the postgresql
+database backend using a multithreaded program and Portable
+AllegroServe. It appears that libpg installs its own SIGPIPE
+handler. When a multithreaded program servicing socket requests has
+SIGPIPE conditions thrown, the running SBCL instance is killed.  The
+web page http://linux.com.hk/docs/postgresql/libpq-threading.html has
+more information about libpq's SIGPIPE handler.
index f3459ca..57745b2 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+28 Sep 2004 Kevin Rosenberg <kevin@rosenberg.net>
+       * BUGS: New file. Document suspected SIGPIPE
+       interaction between SBCL and libpq used in
+       postgresql backend.
+       * sql/package.lisp: Export *default-caching*
+       * sql/oodml.lisp: Use *default-caching* to 
+       control default caching behavior.
+       
 21 Sep 2004 Kevin Rosenberg <kevin@rosenberg.net>
        * Version 3.0.5 release
        * doc/appendix.xml: Add note about loading Oracle8 version
index c98342e..77617e7 100644 (file)
@@ -984,6 +984,10 @@ maximum of MAX-LEN instances updated in each query."
 
 (defmethod instance-refreshed ((instance standard-db-object)))
 
+(defvar *default-caching* t
+  "Controls whether SELECT caches objects by default. The CommonSQL
+specification states caching is on by default.")
+
 (defun select (&rest select-all-args) 
    "Executes a query on DATABASE, which has a default value of
 *DEFAULT-DATABASE*, specified by the SQL expressions supplied
@@ -1042,7 +1046,7 @@ as elements of a list."
        
        (cond
          ((select-objects target-args)
-          (let ((caching (getf qualifier-args :caching t))
+          (let ((caching (getf qualifier-args :caching *default-caching*))
                 (result-types (getf qualifier-args :result-types :auto))
                 (refresh (getf qualifier-args :refresh nil))
                 (database (or (getf qualifier-args :database) *default-database*))
index 38fcaf7..8351ef3 100644 (file)
         #:instance-refreshed               
         #:update-objects-joins             
         #:*default-update-objects-max-len* 
+        #:*default-caching*
         #:update-slot-from-record          
         #:update-instance-from-records     
         #:update-records-from-instance