From 2961f4f122593e9d4875e88e6af159de28c8dd47 Mon Sep 17 00:00:00 2001 From: "Kevin M. Rosenberg" Date: Tue, 28 Sep 2004 05:03:40 +0000 Subject: [PATCH] r10039: * 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. --- BUGS | 9 +++++++++ ChangeLog | 8 ++++++++ sql/oodml.lisp | 6 +++++- sql/package.lisp | 1 + 4 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 BUGS diff --git a/BUGS b/BUGS new file mode 100644 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. diff --git a/ChangeLog b/ChangeLog index f3459ca..57745b2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +28 Sep 2004 Kevin Rosenberg + * 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 * Version 3.0.5 release * doc/appendix.xml: Add note about loading Oracle8 version diff --git a/sql/oodml.lisp b/sql/oodml.lisp index c98342e..77617e7 100644 --- a/sql/oodml.lisp +++ b/sql/oodml.lisp @@ -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*)) diff --git a/sql/package.lisp b/sql/package.lisp index 38fcaf7..8351ef3 100644 --- a/sql/package.lisp +++ b/sql/package.lisp @@ -360,6 +360,7 @@ #:instance-refreshed #:update-objects-joins #:*default-update-objects-max-len* + #:*default-caching* #:update-slot-from-record #:update-instance-from-records #:update-records-from-instance -- 2.34.1