Merge branch 'master' of ssh://git.indexdata.com/home/git/pub/yaz
[yaz-moved-to-github.git] / NEWS
diff --git a/NEWS b/NEWS
index 87caa76..2a0c0eb 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,539 @@
+--- 5.0.3 2013/11/19
+
+yaz-ztest: -V shows version (like yaz-client -V)
+
+New iconv encoding: danmarc YAZ-692
+
+yaz-client: lslb, ssub, mspn are Odr_ints now YAZ-705
+
+daemon: only wait for immediate child rather than all children. YAZ-704
+
+yaz-client: fix setting of SRU record schema. If scheme was unset, it
+could lead to invalid memory reference.
+
+--- 5.0.2 2013/10/16
+
+yaz-ztest returns schema for MARCXML test records. SRU require that
+recordSchema for records.
+
+GFS: make surrogate diagnostic when yaz_record_conv_record fails -
+instead of non-surrogate diagnostic. This is a per-record failure.
+
+GFS: Allow multiple listenrefs YAZ-554. A server in yazgfs configuration
+may refer to multiple listeners now. Attribute listenref is a comma separated
+list of listen IDs.
+
+GFS: Use xmlconfig path as prefix for fnames YAZ-702. When -f
+option is given for GFS, the dirname of filename (for -f) is used
+as prefix for options such as cql2rpn, ccl2rpn, etc.
+
+Content-Type charset fixes YAZ-701 . Do not inspect charset in
+Content-Type header for SOAP when decoding SRU. The payload (XML)
+itself tells what encoding it is. In response, never supply encoding
+in Content-Type. The response payload (XML) tells what it is (with no
+encoding in XML it's UTF-8).
+
+HTTP decoding: allow blanks in URL paths YAZ-700
+
+--- 5.0.1 2013/10/04
+
+Various fixes for how SRU 2.0 is encoded. Fix NS for SRU 2.0 diagnostics
+and facets. Ensure recordData and recordSchema are always present in
+record element, because they are required.
+
+Remove deprecated functions yaz_uri_val .. and yaz_uri_val_int. Never used
+outside YAZ.
+
+Simplify in a lot of places using odr_strdupn.
+
+odr_create_Odr_oct: null terminate the buffer. Some applications rely on it.
+
+--- 5.0.0 2013/10/01
+
+Increase various buffers in GFS's statserv_options_block
+Change many 'unsigned char *' to 'char *' for ODR-related utilties.
+This change makes many type-casts redundant, and, thus simplifies code.
+
+Remove last bits of WAIS support.
+
+Remove member 'size' from Odr_oct.
+
+Slim down the public part of 'struct odr'. Most elements are not part
+of struct Odr_private.
+
+Add support for SRU 2.0. Since SRU 2.0 is incompatible with earlier
+versions of SRU, yaz-client and zoom C are using SRU 1.2 by default.
+In particular facets are supported in both client - and server side.
+Facets are also supported for Z39.50 and is carried in additionalSearchInfo
+of searchRequest/searchResponse with OID 1.2.840.10003.10.1000.81.5 AKA
+"Facet-1" in oid.csv. The info is defined in facet.asn (which covers
+both request/response). This is what a search handler in the GFS
+will see (regardless of whether operating in SRU mode or Z39.50).
+
+Changes to the srw.h (SRU/Solr) definitions include:
+- New element in Z_SRW_searchRetrieveRequest, queryType (char*) and query
+(char*), which replace union query and query_type (int).  This is because
+SRU 2.0 supports a queryType parameter. This also means that, to carry
+PQF, in SRU we can now use queryType=pqf and query=PQFstring , rather than
+x-pquery=PQFstring (extention parameter). The extension parameter
+is still supported.
+- New element, packing, that has information about SRU
+2.0 recordPacking (not to be confused with SRU 2.0 recordXMLEscaping).
+
+New element in Z_SRW_searchRetrieveResponse, resultCountPrecision.
+
+New element, packing, in Z_SRW_explainRequest.
+
+New elements in Z_SRW_scanRequest, queryType and scanClause.
+These replace query_type and scanClase untion. This is similar to what
+happend to search.
+
+--- 4.2.69 2013/10/01
+
+GFS: log when closing down - at least SIGTERM YAZ-684
+Also change formatting WRT PID logging a bit.
+
+Improve display of MARC records with multi-byte subfield IDs YAZ-695
+In some rare cases subfield identifiers are multi-byte characters.
+This will try to deterime length of those and split accordingly.
+This affects display in line mode as MARCXML/MarcXchange. The encoding
+of ISO2709 is the same.
+
+Change inp argument to const for yaz_read_UTF8_char.
+
+yaz-marcdump: fix leaks for MARCXML parsing. YAZ-694
+
+MARCXML parsing: avoid skipping 1st field if no leader. YAZ-693
+
+Better check of marc leader info YAZ-691
+Problem is that some systems generate MARCXML/MarcXchange with
+funny headers. These will not work if encoded as ISO2709.
+Some tests produce new output, due to updated warning messages
+
+cql2pqf: allow PQF queries from stdin (because CQL is also allowed)
+
+yaz-client: display MAB records YAZ-689.
+Thanks for Heiko Jansen for this patch.
+
+New utility z_get_HTTP_Response_server which allows both HTTP server name
+and HTTP server URL to be given in response.
+
+Debian: do not depend on obs tcl8.3.
+
+Debian: do not depend on obs libicu36-dev.
+
+--- 4.2.68 2013/09/23 
+
+GFS: pass additionalSearchInfo to search memeber search_input if
+given. Otherwise pass otherInfo. Request for facets and other search
+related things will be passed there in future versions of YAZ.
+
+New ZOOM setting, authenticationMode, which allows authentication
+paramters to be encoded in the URL rather than via HTTP Basic auth.
+YAZ-686
+
+rpn2solr: fix nested AND/OR handling. YAZ-685
+
+Add comparison routines for some Z-types, such as NamePlusRecord,
+RPNQuery, Query, RecordComposition and OtherInformation.
+
+--- 4.2.67 2013/09/19 
+
+Don't decode MAB as MARC. Just like we don't attempt to decode
+HTML/XML as MARC. Fixes MAB display problem that was introduced in 4.2.64.
+
+CCL: allow quoted terms for date ranges. YAZ-681
+
+Introduce ccl_parser_qual_search. This function makes old function
+ccl_qual_search, from YAZ 2, available again.
+
+Add yaz_facet_list_to_wrbuf. YAZ-683
+
+--- 4.2.66 2013/09/11
+
+ZOOM: fix record handling for Solr. ZOOM_record_get would return 0, if
+schema was given for search. YAZ-675
+
+Add Solr date range searches. YAZ-621
+
+--- 4.2.65 2013/08/22
+
+ZOOM: another fix for record caching (introduced in YAZ 4.2.64).
+
+--- 4.2.64 2013/08/21 (Broken WRT ZOOM C, do not use)
+
+ISO2709/MARC parse most octet aligned records; not just those that
+are known to be ISO2709/MARC. This makes ZOOM and yaz-client
+MARC parse more records instead of just dumping as is. YAZ-670
+
+ZOOM: proper caching for variations of record schema. YAZ-671
+
+Solr: Check for enging / and perhaps commands (select/term) YAZ-651
+
+--- 4.2.63 2013/07/17
+
+Add yaz_strcmp_null
+
+--- 4.2.62 2013/07/11
+
+New utility z_get_HTTP_Response_details - an extended version of
+z_get_HTTP_Response.
+
+New utility yaz_url_get_error which returns error message of last
+failed yaz_url_exec call.
+
+yaz-url and url functions: allow max HTTP redirects to be controlled.
+
+New functions yaz_file_glob2, yaz_xml_include_glob.
+These functions takes a flags parameter, which, for now only controls
+whether to fail inclusion of a non-existing file (without glob
+pattern) - flags YAZ_FILE_GLOB_FAIL_NOTEXIST.
+
+--- 4.2.61 2013/06/20
+
+For MARC XML parsing, allow record without leader. A fake/default leader
+is inserted and a warning is tagged with the record.
+
+ICU: fix leak in in icu_iter_get_org_info.
+
+--- 4.2.60 2013/06/14
+
+ICU: fix bug in icu_iter_get_org_info (un-init variable).
+
+--- 4.2.59 2013/06/11
+
+Implement z_HTTP_header_remove.
+
+--- 4.2.58 2013/06/11
+
+ICU: Disallow 0 ptrs for some ICU string utilities.
+
+ICU: new utilities icu_iter_get_org_info and icu_chain_get_org_info:
+returns original tokens (before normalization).
+
+CCL: avoid z39.58/regex truncation when not needed. Apply only the
+conversion of those masks, when absolutely necessary.
+
+CCL: configurable masking character - @mask. Default masking character
+is # for CCL.
+
+HTTP encoding: remove Transfer-Encoding header. YAZ uses content_len and
+full response anyway, so a Transfer-Encoding header will obstruct the
+response.
+
+--- 4.2.57 2013/05/15
+
+COMSTACK: @ uses AF_UNSPEC . But we prefer AF_INET6 over others when
+picking a socket. Problem is that some systems has IPV6 support, but
+we can't create sockets for them, so we pick AF_UNSPEC first.
+
+HTTP encode. Proper Content-Length YAZ-660. For yaz_encode_http_response
+use content_len to determine resulting Content-Length in HTTP response
+and NOT Content-Length supplied in headers by user.
+
+z_HTTP_header_add_basic_auth uses z_HTTP_header_set rather than
+z_HTTP_header_add, to avoid having two Authorization headers by mistake.
+
+Fix problem with HTTP decoding. For HTTP 1XX, 204, 304 assume no
+content-length.
+
+Fix yaz_base64decode to use proper signed. Problem occurred on platforms
+with big endian and unsigned char (by default).
+
+--- 4.2.56 2013/04/26
+
+Fix yaz-client connect (crash in 4.2.55).
+
+--- 4.2.55 2013/04/26
+
+Fix proxy/host problem for ZOOM that could occur if unix sockets
+was in use.
+
+New Debian package libyaz4-dbg.
+
+Fix problem with cs_close hang/wait in SSL mode. Invoke gnutls_bye
+differently in tcpip_close.
+
+--- 4.2.54 2013/04/17
+
+Windows installer of YAZ includes YAZ4J as a component.
+
+CQL: allow "extra terms" again, by default. Thus, the CQL parser
+accepts a superset the standard. This reverts to CQL as of YAZ 4.2.51
+and earlier. CQL parser may operate in strict mode where queries
+not conforming to the standard BNF are rejected (syntax error).
+Whether the CQL parser operates in strict mode is controlled with
+cql_parser_strict . Strict mode enabled with option -S for utilities
+cql2pqf and cql2xcql .
+
+yaz-ztest: returns OPACXML records for syntax=XML and element set=OP.
+
+--- 4.2.53 2013/04/10
+
+New charset, MARC-8c, which is like MARC-8 but allows control characters
+0x01 through 0x1F, except ESC to be passed through verbatim.
+
+Fix a problem with duplicate sub field character in MARC output. Problem
+happened only when output was MARC-8 encoded.
+
+--- 4.2.52 2013/04/03
+
+yaz-ztest: Use hash for fake hit count. Before, random number was used.
+This is problematic for unit tests using yaz-ztest. This patch also makes
+a hash for CQL queries. For RPN, any term with a leading digit will be
+treated as pseudu hit count (to force any particular hit count by a client).
+
+yaz-ztest: return unique MARC dummy records. Beyond record offset
+24, the author surname is patched with offset to make all records
+unique.
+
+COMSTACK: make @ bind to IPV6+IPV4 consistenly and avoid depending
+on system wide default (/proc/sys/net/ipv6/bindv6only).
+@4 binds to IPV4 only. @6 binds to IPV6 only.
+
+Update CQL API documentation a bit
+
+CQL: don't accept extra terms for queries. Makes the CQL parser
+stricly conformant to the standard.
+
+--- 4.2.51 2013/02/12
+
+GFS: scan handler gets extra_args from request and may return extra
+response data . That's for SRU only.
+
+Solr scan support for ZOOM and yaz-client. Patch from Simon Jacob.
+
+--- 4.2.50 2013/01/30
+
+New function, yaz_xml_to_opac, to convert from OPACXML to Z39.50 OPAC.
+
+OPACXML: sync spelling of availabilityDate in XML to that of Schema
+opaxxml.xsd. The schema had the correct spelling of this member always.
+The ASN.1 was mis-spelled and still is (API change) - we are
+not changing this. However, the OPAC to XML conversion had yet
+*another* typo.
+
+GFS: Allow conversion between Z39.50 OPAC and OPACXML via retrieval
+element.
+
+New function, z_ext_record_oid_nmem, which is similar to
+z_ext_record_oid but takes NMEM rather than ODR
+
+--- 4.2.49 2013/01/18
+
+ICU: New conversion element 'join' which joins tokens into one
+with a custom character given by rule attribute.
+
+--- 4.2.48 2013/01/10
+
+New GFS search member: present_number. This is a hint to the
+search handler how many records are going to be fetched immediately
+following search. There's no guarantee that it's going to be the case,
+since it depends on hit count (for Z39.50 piggyback) and whether errors
+turn up.
+
+Make a few functions static (private). The functions getbyte_stream,
+ungetbyte_stream and yaz_gets are now private. They were never declared
+in a header file.
+
+yaz-marcdump: exit(5) for serious decoding errors
+
+ISO2709 decoding: be more picky WRT header
+
+GFS: bail out of fetch if last_in_set is set. Until now, last_in_set,
+was only used as to indicate that next-result-set-position should be
+set to zero.
+http://www.loc.gov/z3950/agency/markup/04.html#Next-result-set-position
+Based on patch from Ashley Sanders.
+
+Make some functions static/private in PQF parsing. Those functions were
+never declared in a public header and so should not be in use by
+applications based on YAZ.
+
+--- 4.2.47 2012/11/23
+
+ZOOM: special options to control APDU logging.
+Using ZOOM_connection_option_set(c, "saveAPDU", "1") will enable
+logging of APDUs until "saveAPDU" option is set again. If logging is
+already enabled the effect is that current APDU buffer is cleared.
+Using ZOOM_connection_option_set(c, "saveAPDU", "0") disables
+logging (default behavior on new connection).
+The APDUs sent/received can be obtained by using
+Using ZOOM_connection_option_get(c, "APDU") or
+ZOOM_connection_option_getl(c, "APDU", &l).
+
+GFS: relay implementation_version from backend
+From 3.0.40 and later, implementation_version from backend was
+not used in init response at all.
+
+--- 4.2.46 2012/11/15
+
+Fix cs_rcvconnect for SSL comstack GNUTLS. Did not work in non-blocking
+mode at all. Probably never did.
+
+Make a new version of ztest.pem that, at least, is not expired.
+
+--- 4.2.45 2012/11/13
+
+Fix description of CCL directive 'case'.
+
+More tight checking of form arguments (yaz_uri_to_array). Makes
+YAZ better at rejecting big and/or bad POSTs.
+
+SRU decoding does not report more than up to 10 invalid arguments.
+
+rpn2cql: less quotes in generated terms. Semantics unchanged, but
+it's prettier this way.
+
+--- 4.2.44 2012/10/25
+
+New utility yaz_decode_init_diag. Defined in proto.h.
+
+Allow HTTP protocol on unix local socket. Also Z39.50 database may be
+given for unix local socket.
+    The COMSTACK string for doing so is:
+    unix:<spec>:<uri>
+    Examples:
+      unix:/myfile:tcp:localhost:9999/mybase
+      unix:/myfile:localhost:9999/mybase
+      unix:/myfile:http://fakehost/mybase
+
+debian: Use dpkg-buildflags in build process.
+
+--- 4.2.43 2012/10/19
+
+ZOOM C: don't trust recordPosition always. Some servers, such as IGI
+global's SRU service uses a recordPosition scheme starting from zero.
+First record's position should be one
+according to the standard.
+
+--- 4.2.42 2012/10/18
+
+Allow more namespaces for SRU. This is to allow, for example, an
+incorrect namespace returned from server
+http://services.igi-global.com/sru .
+
+Minor fixes for compilation on Windows.
+
+--- 4.2.41 2012/10/11
+
+daemon: log total number of bad signals from child on stop so that it
+is more easy to spot problems with child worker processes.
+
+retrieval: empty backend name attribute omits element set
+from being used in retrieval.
+
+--- 4.2.40 2012/10/04
+
+Implement Solr sort strategy "solr", similar to sru11 sorting. 
+This will implement the correct parameters on Solr requst to do 
+native sorting.
+
+--- 4.2.39 2012/09/28
+
+Implement ccl_qual_fitem2. Like ccl_qual_fitem but with diagnostic
+string returned.
+
+MARC: Extra/missing indicator handled for MARCXML.
+The indicator length is given in header and is the same for the
+whole record. If attributes ind1, ind2 are missing, then content
+character defaults to blank.  Extra indicator attributes (beyond)
+indicator length are treated as an error.
+
+Reformat: delete trailing whitespace
+
+--- 4.2.38 2012/09/17
+
+MARC: fix non-ASCII characters for leader. This is to ensure we can
+generate XML in UTF-8.
+
+CCL: new special attribute s=ag . Almost s=pw,al but preserves words
+in one node with structure word.
+
+--- 4.2.37 2012/09/04
+
+yaz-json-parse: JSON output may be pretty printed by using option
+-p twice.
+
+Increase default value of max message for Z39.50 Init for GFS, ZOOM
+and yaz-client. Old value was 1 MB. New value is 64 MB.
+
+--- 4.2.36 2012/08/22
+
+yaz-client: don't display bogus records from SRU servers. Some SRU servers
+return more records than given by *maximumRecords*. Skipping those in
+display!
+
+record_render: simplify buffer return handling and fix at least one bad
+memory reference, that broke the test_embed_record sometimes.
+
+Allow http://user:pass@host notation for yaz_url_exec.
+
+zoomsh: allow shell command to be executed. Via the system(3) call.
+
+yaz_poll: Allow num_fds == 0
+
+yaz-client: fix bad encoding of "itemorder item". The itemorder
+item <no>  - command forgot to use length of encoded Item Request
+package. Error present since YAZ 3.
+
+yaz-ztest: fix bad usage of session handle. Bug was introduced when
+result sets were saved (271a9c83).
+
+SRU recordPacking: guess record packing in response rather than looking
+at the recordPacking element which, OF COURSE, changed semantics in SRU
+2.0.
+
+Decode SRU 2.0 responses. The official namespace for responses, according
+to http://docs.oasis-open.org/search-ws/searchRetrieve/v1.0/cs01/schemas/sruRes
+appears to be http://docs.oasis-open.org/ns/search-ws/sruResponse .
+nature.com's server, however, usee namespace
+http://docs.oasis-open.org/ns/search-ws/sru-2-0-response . For this reason
+we are now using a glob-expr to match up the namespace. ZOOM C and
+yaz-client updated. Perhaps SRU 1.2 uses same namespace, I don't know.
+I can not find a single real example showing the "real" namespace in
+the documentation from OASIS. The namespace for requests is different
+from responses, but this is not added to YAZ yet, when we don't encode
+them yet.
+
+--- 4.2.35 2012/06/26
+
+zoom/record_render: add support for Base64 decoding fo MARC records
+within XML element. For example: "xml; charset=marc-8; base64=/my/text()"
+which will decode base64 + ISO2709 marc-8 encoded material from text node
+under /my .
+
+--- 4.2.34 2012/06/07
+
+Add missing definitions ZOOM_resultset_get_facet_field_by_index
+and ZOOM_resultset_facets_names.
+
+zoom: fix bad free for ZOOM_connect - happened when ZOOM connection
+options was in use.
+
+Change APDU dump printing to avoid long leading blanks. For levels 16
+or larger the level is shown and the indentation is truncated but
+recursed with modula 8. This makes it still reasonable easy to read
+- even for nested BER dumps.
+
+Fix bug completeBER_n WRT too nested BER. Function completeBER_n could
+return 0 (incomplete package) in case where the BER package was
+considered too nested (return value of -2).
+
+dumpber: lines of level 15 are not indented further. Two spaces per
+indentation; indentation 15 or more is indented to a fixed indentation
+and augmented with a level=<no> indication.
+
+zoomsh: increase max size of command+args
+
+GFS: No limit in RPN buf size in CQL to RPN conversion.
+
+--- 4.2.33 2012/05/09
+
+New function for daemon utility, yaz_daemon_stop .
+
+Makes yaz_srw_sortkeys_to_sort_spec public on Windows.
+
 --- 4.2.32 2012/04/25
 
 Add some Bib-1/SRU diagnostics + mappings. Bib-1: 1073 and
@@ -170,7 +706,7 @@ yaz_sort_spec_to_srw_sortkeys, yaz_sort_spec_to_type and 7yaz_sort_spec_to_cql.
 rpn2solr supports Z39.58 truncation (104). Thus, CCL truncation mode t=z
 will make it possible to use both single-character mask (#) and wildcard (?)
 in CCL . Throw diagnostic for left truncation because that is not supported
-by SOLR.
+by Solr.
 
 --- 4.2.13 2011/09/01
 
@@ -266,7 +802,7 @@ modified with a new root element <yaz_record> if the recordData contains
 multiple children elements. This is to make the record XML parseable
 afterwards.
 
-RPN to SOLR conversion: encode special characters.
+RPN to Solr conversion: encode special characters.
 
 Generic Frontend Server: fix uinitialized member, stepSize.
 
@@ -368,7 +904,7 @@ so it is appropriate to set Present Status to partial-4.
 
 Move yaz-config man pages to section 1.
 
-More documentation about SOLR.
+More documentation about Solr.
 
 tcp comstack: change behavior for @-specs (anyaddr). @ listens on
 AF_INET (IPV4) peers, and @6 listens to AF_INET6 (ipv6) peers.
@@ -387,7 +923,7 @@ Fix yaz-config output: echo_source not set correctly by configure.
 
 --- 4.1.0 2010/10/05
 
-SOLR WebService support for yaz-client and ZOOM.
+Solr Web Service support for yaz-client and ZOOM.
 
 Define record syntax JSON. OID: 1.2.840.10003.5.1000.81.3 .