$Id: Changes,v 1.64 2008-05-16 16:44:55 mike Exp $

Revision history for Perl extension Net::Z3950::DBIServer.
See the bottom of this file for a list of things still to do.

1.03  Fri May 16 17:44:49 BST 2008
	- Books example expanded to use three-level inner join, using
	  correct configuration syntax with each auxiliary table
	  specified separately.
	- Restructure directories.

1.02  Fri May  2 17:23:49 BST 2008
	- Use left joins for auxiliary tables, so that missing values
	  in the auxiliary tables don't prevent data in the main table
	  from being visible.
	- Example database in examples/books/book.data extended to
	  include books with unknown authors.

1.01  Tue Oct  9 11:23:21 EDT 2007
	- Include sample script for System-V init, in examples/init-script
	- Add Oracle version of books example, and notes on working
	  against an Oracle back-end.

1.00  Fri Mar 16 15:39:44 GMT 2007
	- Support for SRU and SRW, largely due to changes in the
	  underlying YAZ and SimpleServer code.
	- XML record-specifications may now indicate what schema they
	  conform to, and this information is returned in SRU/SRW
	  responses.
	- Requests to present records from a non-existent result-set
	  no longer cause a null indirection.
	- Use correct diagnostic (114) for unsupported Use attribute.
	- Support for new attribute-set names "USMARC", "BIB-2" and
	  "ZeeRex".
	- Recognise the name "XD-1" for the cross-domain attribute
	  set, as YAZ does.  (Also still recognises "XD", which is
	  probably more correct.)
	- More work on the tutorial, DBIServer/Tutorial.pm
	- Changes to "examples/books/books.nzd" to illustrate the new
	  tutorial material.
	- Slightly less noisy logging.
	- Note that MARC::Record is now a prerequisite.
	- Require version 1.03 of SimpleServer, which in turn requires
	  version 2.1.24 of YAZ, which correctly propagates SRU/W
	  error addinfo.
	- Change colour-scheme of generated documentation.

0.11  Mon Apr 11 19:50:31 BST 2005
	- Fix a bug in release 0.10 that prevented repeated fields
	  from working: each such field would occur the specified
	  number of times in each generated record, but the value
	  would be the same for each instance.
	- Many documentation improvements.
	- The example configuration "examples/books/books.nzd" now
	  exercises nearly all the server functionality.

0.10  Mon Apr 11 11:03:18 BST 2005
	- Support for full-text searching, using MySQL syntax.  (This
	  WILL NOT WORK on most other back-end databases).  It is
	  configured by access-point specifications of the form:
		access <number> = fulltext "field,field..."
	- Fields in generated records now appear in the order that
	  they are specified in the configuration file rather than
	  alphabetically sorted.
	- Repeated fields may now be included.
	- When generating MARC records, a repeated subfield within an
	  already created field now causes a new (repeated) field to
	  be started.
	- Presentation of SUTRS records may now by configured by means
	  of a "format sutrs" section in the data section of a
	  database's configuration, similar to the "format xml"
	  section.  If this is absent, then the server falls back to
	  presenting the old-style default SUTRS record containing all
	  fields in alphabetical order.
	- Compound field-specifications no longer need _begin_ with
	  "%" in order to be recognised: merely _containing_ "%" is
	  sufficient.
	- Compound fields now behave properly if they consist of
	  multiple lines (i.e. contain embedded newlines).
	  Previously, the embedded text-constants came out in the
	  wrong order.
	- Fields (both simple, and embedded within a compound field
	  specification) may now be prefixed with a "?", meaning that
	  they are not required to be non-null; if they are null, then
	  they are omitted, (along with the immediately preceding
	  constant string in the case of embedded fields).
	- Tab characters (represented by "\t") are now supported in
	  strings, as well as newlines ("\n").
	- Strings in the configuration file may be concatenated using
	  "+", which allows long strings to be broken across lines.
	- The configuration file is now automatically reloaded if it
	  has changed, just before any search or retrieve request is
	  handled.

0.09  Mon Feb 14 16:34:46 2005
	- Database-names are now recognised case-insensitively, as
	  specified in section 3.2.2.1.2 of the Z39.50 standard.

0.08  Wed Dec 15 22:54:30 GMT 2004
	- Support for MARC record syntax.
	- Now tested with MySQL.  Support for MySQL in examples/books.
	- Slightly clearer implementationVersion returned to server.
	- Add new "defaultattrs" clause to the "search" part of the
	  per-database configuration, allowing (for example) a default
	  access-point to be specified.
	- Finish "Z39.50 CAPABILITIES" documentation in DBIServer/Intro.pm

0.07  Tue Dec 10 17:07:53 2002
	- Support for XSLT transformation of returned XML records:
	  this allows the relatively simple records that are generated
	  by "vanilla zSQLgate" to be translated into complex formats
	  such as OAI.
	- Make exception handlers robust against non-object
	  exceptions.  (They were supposed to be like that already,
	  but a typo defeated that robustness.)

0.06  Thu Nov 28 10:46:00 2002
	- Add a new per-database clause to the configuration-file
	  grammar, RESTRICTION = STRING, where the string contains an
	  SQL condition restricting the records that may be found: for
	  example --
		restriction = "id != 3 and id != 42"
	- Bring examples/results in line with the real RESULTs
	  database: this involves renaming databases, tables and
	  fields, and consequently a few files, but no radical
	  changes.

0.05  Fri Nov 15 14:59:10 2002
	- Massage the SELECT-statement generator not to prepend
	  ``<table>.'' to column names in simple configuration where
	  there are no auxiliary tables.  This is because DBD::CSV's
	  SQL parser doesn't recognise ``<table>.<column>'', which
	  was preventing examples/csv from working.
	- Add a new XML record-format directive, ``attrs = "string"''
	  to the .nzd file format: it specifies a set of attributes
	  (e.g. namespaces) to be attached to the opening tag of the
	  record.
	- Add a new example database and configuration, "results",
	  based on the RESULTs project and having broadly similar
	  data structures.  (See http://www.results.ac.uk/)
	- An XML data specification which begins with an asterisk is
	  now used as constant data, included in every generated
	  record (with the asterisk stripped!):
		data format xml {
		    field "rights" = "*All rights reserved"
		}
	- Add support for "any" access points: the columnName string
	  on the right hand side of an accessSpec may now be a
	  comma-separated list of columns in which searches are to be
	  performed:
		search attrset bib1 {
		    access 1016 = "author,rtitle"
		}

0.04  Fri Nov  8 16:11:13 2002
	- Add support for GRS-1 (NOT FULLY WORKING)
	- Add new configuration-file syntax at the top level:
		userName = "<name>"
		passWord = "<pw>"
	  to specify a username and password to use with
	  DBI->connect().

0.03  Tue Apr 23 16:28:35 2002
	- Added new config-file syntax
		field "fieldName" = "columnName"
	  equivalent to the old (and now deprecated)
		column "columnName" = "fieldName"
	  The new form is preferred since it is amenable to other,
	  more complex RHSs enabling us to specify link-fields etc.
	- Change XML record generation to be driven by the list of
	  fieldnames, not that of columnnames.
	- Add ability to search across multiple tables: this allows
	  "link fields" to be resolved, as in fetching the name of
	  book's author by following the book record's "author_id"
	  record to a separate author record carrying the name.
	- Create new "examples" subdirectory.
	- Replace old "music" example with similar examples/books.
	- Move "reading" example to examples/csv.
	- Various tweaks to documentation.

0.02  Fri Mar  8 12:43:46 2002
	- Enable configuration files to specify attribute sets by name
	  (e.g. BIB1) as well as by OID (1.2.840.10003.3.1)
	- Improve diagnostics from configuration-file parser: filename
	  and line number are now specified on all errors.
	- Modify the ResultSet module to notice when its using the CSV
	  driver and count records by hand rather than trying SELECT
	  COUNT(), which is not supported by that driver.
	- Tweaked the configuration file lexer to recognise "\n" in
	  strings as a literal newline (entirely so that we can
	  specify a rational end-of-line protocol in our DBD::CSV
	  invocation.)
	- Fix the XML record renderer to use the specified tag-names:
	  was previously using the table names!
	- Added the zSQLgate Installation Guide (the POD documentation
	  from the Net::Z3950::DBIServer::Install module.
	- Added the "music" example directory, using DBD::CSV.
	- Various tweaks to documentation.

0.01  Tue Mar  5 17:11:51 2002
	- original version; created by h2xs 1.19

--

### Still to do (see also DBIServer/Spec.pm, "FUTURE DIRECTIONS")
	- ### document compound fields
	- Finish tutorial in DBIServer/Tutorial.pm
	- Fix GRS-1 record-syntax support to return an actual GRS-1
	  record rather than an ASCII rendering of one.  (This
	  requires changing SimpleServer to handle such records.)
	- Allow XML field names to be unquoted in config file.
	- Support for CCL query syntax.
	- Support case-insensitive searching.
	- Fix so that multiple link-field values don't generate excess
	  records.
	- Fix so that fetch doesn't keep reading past the end of the
	  searchlist if for some reason it's shorter than we thought
	  it was going to be, and notices if there are spares.
	- Support X-to-many linking (that is, repeated output fields).

