DAL cleanup project proposal

ghudson@MIT.EDU ghudson at MIT.EDU
Mon Jun 28 13:05:17 EDT 2010

I have put together a concrete plan to improve the database access
layer interface for 1.9.  Please see:


The first section, Analysis of the 1.8 DAL, has been there for a while
and is essentially unchanged.  The second section, Prioritization,
lays out a six-step improvement plan, with the last three more
ambitious steps deferred to separate project writeups.

I've started a formal two-week project review, but expect to get
started on implementation of the early steps before that finishes.
Anything can be changed or reverted up to the point where 1.9 is
branched, of course.

I want to draw special attention to the first step, safety mechanisms,
so I'll quote that here.

== Safety Mechanisms ==

Define a constant in kdb.h which is the YYYYMMDD date of the most
recent incompatible modification to the DAL vtable. Pass this constant
to the plugin's init_library function. The plugin can compare the
value of this constant to the one it was compiled with, and detect
whether it is out of date. If the plugin returns an error, the DB
module will not be used. (It would be possible to alter the
initialization mechanism so that a plugin could support multiple
versions of the KDC. Such a mechanism will be deferred until the more
general plugin framework plan is better defined.)

Define a KDB API version in kdb.h to allow external users of libkdb5
to conditionalize across incompatible changes to the API. This version
is intended to be in sync with the library ABI version number, so will
start at 5.

More information about the krbdev mailing list