Bugfixes & changes on PLOB
This page contains the descriptions of all bugfixes and changes before
the current version, mainly for archiving purposes.
Bugfixes for version 2.09
None available.
Bugfixes for version 2.08
Serverless mode for LispWorks 3.2 on Solaris
The serverless mode in LispWorks Common LISP 3.2/Solaris crashes with
a segmentation violation when the last database is closed. To fix
this, change file plob-2.08/src/lispworks/plob-low.lisp
around line 310 to:
(defparameter *max-lisp-addr*
(or
#+(and :allegro :alpha)
(+ (max #x30000000 #x54000000) *heap-spare-size*)
#+(and :allegro :hpux)
(+ (max #x20000000 #x64000000) *heap-spare-size*)
#+(and :allegro :mips)
(+ (max #x30000000 #x64000000) *heap-spare-size*)
#+(and :allegro :aix)
(+ (max #x30000000 #x64000000) *heap-spare-size*)
#+(and :allegro :solaris2)
(+ (max #x8000000 #x5000000) *heap-spare-size*)
#+(and :allegro :linux86)
(+ (max #x20000000 #x64000000) *heap-spare-size*)
#+(and :lispworks :solaris2)
(logand #xff000000 (+ (sys::object-address nil) #x20000000)))
#+:lisp-doc "... documentation omitted here ...")
Thanks again to Harlequin's excellent support on LispWorks for
supplying the information necessary to fix this bug.
Bug in installation script
After unpacking plob-2.08.tar and before starting an
installation, change file plob-2.08/conf/make.server.in
around line 63 from:
MkCopyRule($(DEFAULTROOT) slash, \
$(LIBDIR) slash, \
fileExe(plobdadmin))
to:
MkCopyRule($(DEFAULTROOT) slash, \
$(BINDIR) slash, \
fileExe(plobdadmin))
Upgrading from Plob 2.08 to Plob 2.08a
Plob 2.08a contains some minor bug fixes in some of the install
scripts and the documentation, and some performance improvements for
inserting bulk data into a database.
For already done downloads of 2.08, the archive upgrade-2.08a.tar.gz contains all
changed files. For installing the archive, unpack it onto the current
2.08 installation, and in directory plob-2.08, call
make config anew.
ACL 5.0 for NT's debugger has problems getting back to toplevel
listener
With ACL 5.0 for NT, there is a problem with CERRORs raised from the
lower C layer of PLOB: A :pop does not return to the
toplevel listener, but raises the CERROR anew. This seems to be a bug
in ACL 5.0 for NT's debugger. The workaround for the moment is for a
CERROR raised because of a not running PLOB server to start the
server manually; this will return ACL 5.0 for NT to the toplevel
listener.
For this reason, plob::*verbose* should not be set to
nil when running under ACL 5.0 for NT, since this might put
PLOB into an infinite loop.
+plob-{min,max}-marker+ as {lower,upper} interval
bounds
When using the +plob-{min,max}-marker+ as {lower,upper}
interval bounds for a search in a btree, the search will start always
on the {first,last} element in the btree, that means, the compare
criterion used is always {>=,<=}, even
if {>,<} has been specified to get the
{second,last before the last} element as first element of the
interval.
Bitvectors in LispWorks Common LISP 4.0.1
Please note that with the LispWorks 4.0.1 for Windows/NT client,
bitvectors cannot be stored and loaded at the moment. This is due to
the new foreign language interface introduced with 4.0.1; Harlequin is
aware of this problem and will extend the interface.
Changes from version 2.08 to 2.09
- Multiple databases on a single system are now better supported;
for disciminating different databases, the port number is now used
instead of the RPC version number. Thanks to Jon Dyte for providing
the hint to this improvement.
- Structure classes are now stored correctly in LispWorks 4, too.
- Build is now completely supported for CYGWIN on Windows/NT.
- In ps/plobelugm99.pdf, find my paper on the
architecture of PLOB! presented at ELUGM '99 in Amsterdam.
Changes from version 2.07 to 2.08
- Various bugfixes
- Short-floats now work again for LispWorks 3.2
- Bignums should now work for ACL 5.0.
- The client handling for write-lock-store did not work
properly under certain circumstances; this has been fixed. At end of
transaction of a write-locked database, the server spent much time
unlocking not locked objects; this has been fixed.
- Object preallocation had a bug which made the preallocation not
work at all under certain circumstances; this has been fixed.
- The client/server marshalling code has been fixed to pass objects
correctly between heterogenous, arbitrary architectures. Earlier
versions had problems with such configurations for example when
handling floats or bignums.
- The server code has been made 64 bit proof (the client code is
already 64 bit proof).
- The plobdadmin utility has been rewritten in C; its
functionality has been extended. See file
plob-2.08/src/admin/README for details; directory
plob-2.08/src/admin/scripts/ contains example scripts for
using plobdadmin automatically.
Changes from version 2.06 to 2.07
- Support for ACL 5.0 beta on Windows/NT has been added.
- A serverless mode has been added. This has the following
advantages:
- Performance is improved by a factor of at least 2 compared to a
client connected to a server running on localhost. Please
consult the user's guide, chapter `Administration', section `Running
PLOB! serverless', and chapter `Database functionality',
section `Performance' for details.
- No server process or server administration is needed at all.
For technical reasons, the serverless mode works only for LispWorks
Common LISP 4.0.1 on Windows/NT, for Allegro Common LISP 5.0 on
Windows/NT and Allegro Common LISP 4.3 on Solaris. It definitely does
not work for LispWorks 3.2.2 on Solaris, Allegro Common LISP 5.0
beta on Linux and Allegro Common LISP 4.3.1 on Irix.
- The documentation in the user's guide has been improved:
- Section 4.1 has been added explaining some database terms as used
in PLOB.
- The performance numbers have been moved from the Web page into
section 4.10. The numbers have been corrected, and numbers for
PLOB! running in serverless mode have been added.
- Section 5.3 has been added explaining the serverless mode of
PLOB.
- Section D.2 has been added clarifying how to submit a bug
report.
- The license terms have changed. PLOB is no longer
published under the GNU General Public License, but as free
software. See section D.6 in the user's guide for details.
- Bugfix: For LispWorks 3.2.2, the library containing the foreign
function code is now properly loaded.
- Bugfix: PLOB's internal `metaheap' conflicted with the
local LISP thread's persistent heap when doing locking [on `store'
level].
- Bugfix: The :type slot option was not passed to a
class definition for classes which had been compiled from a class
description into the current LISP image.
- Bugfix: Although plob::*verbose* was set to
nil, some cerrors had not been continued
automatically.
Changes from version 2.05 to 2.06
- The btree interface has been completed and improved:
- Mapping is now possible for btree keys in left-sided or
right-sided opened or closed intervals.
- The mapping through a btree's keys can now be done ascending or
descending.
- A new access method has been added for btrees. It is silimar to a
file interface or to the cursor interface known from SQL.
Please consult the user's guide, chapter `Database functionality',
section `Persistent btrees', subsection `Cursors on btrees' for
details.
- Support for ACL 5.0 beta on Linux has been added.
- Faster allocation of dynamic sized objects (strings and vectors).
- More simple and (hopefully :-) more robust installation
procedure.
Changes from version 2.04 to 2.05
In 2.04, the installation script had a bug, this has been fixed.
Following new features have been introduced:
- Full support for LispWorks Common LISP 4.0.1 for Windows/NT
clients. In conjunction with PLOB's Windows/NT server, the
whole system can run on a single Windows/NT machine.
- Improved inspector methods for LispWorks Common LISP.
- The client C code is now multithread safe.
- Simplified installation on Windows/NT, see the Installation Guide for details.
Changes from version 2.02 to 2.04
The 2.02 distribution had some minor flaws, namely storing and loading
of defstruct instances and hash tables did not work properly; this has
been fixed. Besides that, these new features have been introduced:
- The restriction of only one open database per server machine does
not longer exist. Now, a server can open any (reasonable) number of
databases. Clients are still restricted to one open database at a
time.
- New databases can now be created from the client's side.
- Url-like database names have been introduced.
- The distribution now contains a PLOB! server running under
Windows/NT 4.0
- Improvements on btrees: Page size can now be requested and set,
the minimum and maximum key of a btree can now be requested.
- Built-in classes are now represented as first class objects.
NB: Version 2.03 has never been a public version but a private one for
my main customer, so it is omitted here.
Heiko Kirschke
Last modified: Wed Apr 17 13:26:10 Westeuropäische Sommerzeit 2002