eXist-db 4.1.0

Release Notes

v4.1.0 - April 16, 2018

eXist-db v4.1.0 has just been released. This is a minor release, which contains important bug fixes. Updating to this release is recommended to users experiencing any of the issues below:

Important Bug Fixes

  • A long standing bug caused 0-byte XML documents to appear in database collections. The bug occurred randomly. The document showed up in the collection but was empty when opened.
  • Wrong nodes being returned as the result of an XQuery predicate using a range index. Serializing the returned sequence would show seemingly random nodes from the same document.
  • Several issues and regressions concerning handling binary resources have been fixed.

Features

  • XSuite - Proper integration between JUnit, and XQSuite and XML XQuery tests.
  • Add more Travis CI JDKs (including Java 9).
  • Support more locales for month and day names in format-date.
  • Add support for charset encoding from http response.
  • Updates:
    • Jetty 9.4.9.v20180320
    • YAJSW 12.12
    • AspectJ 1.9.0.RC4
    • cglib 3.2.6
    • j8fu 1.13
    • Jackson 2.9.4
    • jctools 2.1.2
    • log4j 2.11.0
    • Commons Compress 1.16.1
    • Apache HTTP Components 4.5.5

Performance Improvements

  • Switch to non-concurrent ByteArrayOutputStream.

Bug Fixes

  • Fix regression with binary values from files and strings.
  • Fix parsing of QNames in XQuery: The XQuery parser ignored whitespace when parsing a qname, leading to a wrong interpretation of ':' in some contexts, e.g. map constructors.
  • Close input stream in fn:json-doc.
  • Enable previously disabled tests.
  • Fix wildcard lookup in ft:query.
  • Align xml:id handling with saxon and basex.
  • Closing inputstreams and improve ByteArrayOutputStream usage.

Apps

The bundled applications of eXide, and Monex have all been updated to the latest versions.

Backwards Compatibility

  • eXist-db v4.1.0 is backwards binary-compatible as far as v3.0, but not with earlier versions. Users who are upgrading should always consult the Upgrading Guide in the documentation.
  • NOTE: The version of Dashboard that was installed with eXist-db 3.6.1 (or earlier) is incompatible with eXist-db 4.0.0 and later. If you plan to migrate your entire database to eXist-db 4.1.0, you MUST take one of the following steps to allow Dashboard to work after the upgrade:
    1. If you have not yet installed eXist-db 4.1.0, open Dashboard > Package Manager, and upgrade Dashboard to 0.4.10, or run this script in eXide or the Java Admin Client: repo:install-and-deploy("http://exist-db.org/apps/dashboard", "http://demo.exist-db.org/exist/apps/public-repo/modules/find.xql"). Then you may safely install eXist-db 4.0.0 and use Dashboard.
    2. If you install eXist-db 4.1.0 before upgrading Dashboard, run this script in eXide or the Java Admin Client: repo:install-and-deploy("http://exist-db.org/apps/dashboard", "http://demo.exist-db.org/exist/apps/public-repo/modules/find.xql"). Then you may use Dashboard.

Downloading This Version

  • eXist-db v4.1.0 is available for download from Bintray.
  • Docker images for are available from EvolvedBinary's DockerHub.
  • Maven artifacts are available from our mvn-repo.
  • Mac users of the Homebrew package repository may acquire eXist 4.1.0 directly from there.

eXist-db and Web Components - Part 1

Part one gives a short overview of Web Components and why they matter. Read article ...

eXist-db v4.0.0

Release Notes

v4.0.0 - February 14, 2018

eXist-db v4.0.0 has just been released. This is a major release, which contains, API changes, several new features and bug fixes.

Features

  • Added fn:unparsed-text, fn:unparsed-text-lines and fn:unparsed-text-available functions.
  • Implemented HTML ASCII Case Insensitive Collation for XPath 3.1.
  • Replaced ASCIIFoldingFilter with ICUFoldingFilter in NoDiacriticsAnalyzer for better language search support.
  • New User Manager application shipped for the Dashboard.
  • Updated Cache Extension Module:
    • Now implements an LRU policy with both TTL and size options.
    • New functions: cache:names(), cache:keys($name), and cache:destroy($name).
  • Scheduled task option unschedule-on-exception is now exposed in conf.xml.
  • Each thread that eXist creates is now explicitly named for easier identification.
  • Bash Scripts now use /bin/env to locate bash.
  • Updated third-party dependencies:
    • Apache Commons Configuration 2 2.2
    • Apache Commons IO 2.6
    • Caffeine 2.6.1
    • EasyMock 3.5.1
    • Eclipse AspectJ 1.9.0.RC2
    • Eclipse Jetty 9.4.8.v20171121
    • IBM ICU4j 60.2
    • Jackson 2.9.3
    • Java 8 Functional Utilities 1.12
    • Log4J 2.10.0
    • XMLUnit 2.5.1
    • YAJSW 12.11

Performance Improvements

  • Cache Extension Module rewritten to use Caffeine.

Bug Fixes

  • Corrected concurrent access to Document Metadata, previously incorrect due to lazy-loading and incorrect locking.
  • DocumentSets now always unlock all locks that they acquired.
  • Fixed a number of issues with xs:base64Binary and xs:hexBinary returned from XQuery execution in various API's.
  • Fixed a regression with XQuery Update insert into an empty element.
  • Fixed a bug in the EXPath HTTP Client with connection pooling.
  • Fixed a bad thread synchronization in JMX.
  • Corrected invalid type empty() to empty-sequence().
  • Fixed overzealous locking in XML:DB Local API copy operations.
  • Fix to Namespace handling on in-memory DOM nodes.
  • Fixed a NullPointerException in fn:id.
  • Fixed comparison issue with empty sequences.
  • Fixed broker leak in Image Extension Module.
  • Math Extension Module functions now correctly report their namespace prefix.
  • Improved function signatures types:
    • map to map(*)
    • array to array(*)
    • function to function(*)
  • Fixed the XQuery Error Codes of several atomic value comparison operators.
  • Improved warning and error messages during EXPath Package deployment.
  • Many file path related fixes for building and running on Microsoft Windows platforms.
  • Removed last Java Endorsed Library paths to support Java 9.
  • Updated the Java AppBundler (which is used for staring eXist), to provide better Java 9 support.
  • Build labels are now correctly calculated when building from an installed (not-git) product.
  • IntelliJ IDEA project files now support correct ApectJ tools.

Apps

The bundled applications of the Documentation, eXide, and Monex have all been updated to the latest versions. A new UserManager application is also shipped, which replaces the previous in-built UserManager of the Dashboard.

API Changes

  • Legacy XQuery draft syntax empty() has been removed. You should now use the spec. compliant syntax empty-sequence().
  • The previously numeric type was renamed to xs:numeric. numeric is now marked as legacy.
  • The legacy Atom module (org.exist.atom) has been removed.
  • Sending an invalid XQuery to the RESTServer now correctly returns HTTP 400 Bad Request, instead of HTTP 202 Accepted.
  • XMLDB API interfaces have been renamed to be more consistent (e.g. EXistXQueryService)
  • Locks are now re-acquired by a Transaction rather than ownership transferred.

Backwards Compatibility

  • eXist-db v4.0.0 is backwards binary-compatible as far as v3.0, but not with earlier versions. Users who are upgrading should always consult the Upgrading Guide in the documentation.
  • NOTE: The version of Dashboard that was installed with eXist-db 3.6.1 (or earlier) is incompatible with eXist-db 4.0.0. If you plan to migrate your entire database to eXist-db 4.0.0, you MUST take one of the following steps to allow Dashboard to work after the upgrade:
    1. If you have not yet installed eXist-db 4.0.0, open Dashboard > Package Manager, and upgrade Dashboard to 0.4.10, or run this script in eXide or the Java Admin Client: repo:install-and-deploy("http://exist-db.org/apps/dashboard", "http://demo.exist-db.org/exist/apps/public-repo/modules/find.xql"). Then you may safely install eXist-db 4.0.0 and use Dashboard.
    2. If you install eXist-db 4.0.0 before upgrading Dashboard, run this script in eXide or the Java Admin Client: repo:install-and-deploy("http://exist-db.org/apps/dashboard", "http://demo.exist-db.org/exist/apps/public-repo/modules/find.xql"). Then you may use Dashboard.

Downloading This Version

  • eXist-db v4.0.0 is available for download from Bintray.
  • Docker images for are available from EvolvedBinary's DockerHub.
  • Maven artifacts are available from our mvn-repo.
  • Mac users of the Homebrew package repository may acquire eXist 4.0.0 directly from there.

eXist-db v3.6.1

v3.6.1 - January 03, 2018

eXist-db v3.6.1 has just been released. This is a hotfix release, which contains bug fixes for several important issues discovered since eXist-db v3.6.0.

We recommend that all users of eXist 3.6.0 should upgrade to eXist 3.6.1.

Bug fixes

  • Fixed issue where the package manager wrote non-well-formed XML that caused problems during backup/restore. #1620
  • Fixed namespace prefix for attributes and namespace nodes.
  • Made sure the localName of a in memory element is correctly obtained under various namespace declaration conditions
  • Fix for NPE in org.exist.xquery.functions.fn.FunId #1642
  • Several atomic comparisons raise wrong error code #1638
  • General comparison to empty sequence sometimes raises an error #1639
  • Warn if no <target> is found in an EXPath packages's repo.xml

Backwards Compatibility

  • eXist-db v3.6.1 is backwards binary-compatible as far as v3.0, but not with earlier versions. Users upgrading from previous versions should perform a full backup and restore to migrate their data.

Downloading This Version

eXist-db v3.6.1 is available for download from Bintray. Maven artifacts for eXist-db v3.6.1 are available from our mvn-repo. Mac users of the Homebrew package repository may acquire eXist 3.6.1 directly from there.

eXist-db v3.6.0

Release Notes

v3.6.0 - November 27, 2017

eXist-db v3.6.0 has just been released. This is a minor release, which contains several new features and bug fixes.

Features

  • Switched Collation support to use ICU4j.
  • Implemented XQuery 3.1 UCA (Unicode Collation Algorithm).
  • Implemented map type parameters for XQuery F&O 3.1 fn:serialize.
  • Implemented declare context item for XQuery 3.0.
  • Implemented XQuery 3.0 Regular Expression's support for non-capturing groups.
  • Implemented a type-safe DSL for describing and testing transactional operations upon the database.
  • Implemented missing node kind tests in the XQuery parser when using @ on an AbbrevForwardStep.
  • Added AspectJ support to the IntelliJ project files (IntelliJ Ultimate only).
  • Repaired the dependencies in the NetBeans project files.
  • Added support for Travis macOS CI.
  • Added support for AppVeyor Windows CI.
  • Updated third-party dependencies:
    • Apache Commons Codec 1.11
    • Apache Commons Compress 1.15
    • Apache Commons Lang 3.7
    • Eclipse AspectJ 1.9.0.RC1
    • Eclipse Jetty 9.4.7.v20170914
    • EXPath HTTP Client 20171116
    • Java 8 Functional Utilities 1.11
    • JCTools 2.1.1
    • XML Unit 2.4.0

Performance Improvements

  • Compiled XQuery cache is now multi-threaded; concurrency is now per-source.
  • RESTXQ compiled XQuery cache is now multi-threaded; concurrency is now per-query URI.
  • STX Templates Cache is now multithreaded.
  • XML-RPC Server will now use Streaming and GZip compression if supported by the client; enabled in eXist's Java Admin Client.
  • Reduced object creation overhead in the XML-RPC Server.

Apps

The bundled applications of the Documentation, eXide, and Monex have all been updated to the latest versions.

Bug fixes

  • Fixed compilation for Java 9. eXist-db can now be compiled and run on Java 9.
  • Fixed a regression with the XQuery 3.0 Arrow Operator, when it was used in a function, to call a function which is declared later in the XQuery.
  • Fixed a regression in the Lucene Range Index where nested content should always be included for an index key, unless configured otherwise.
  • Fixed a regression in the EXPath HTTP Client. Previously required you to specify http-version, now again defaults to 1.1.
  • Fixed a NullPointerException in the EXPath HTTP Client when using Basic Authentication.
  • XInclude support now correctly implements fallback if a HTTP resource cannot be accessed.
  • Fixes a number of issues where InputStreams were not closed, which leaked file handles; particularly an issue on Windows platforms.
  • Fixed a database shutdown issue with SymbolTable on Windows platforms.
  • Ensured that URIs are correctly resolved in the SourceFactory on Windows platforms.
  • No longer use a custom temp folder, instead use Java's; fixes a bug with Jetty on Windows platforms.
  • Fixed an issue where the EXIST_HOME path was not constructed correctly under some circumstances on Windows platforms.
  • Fixed the return type of fn:doc to match the XQuery F&O specification.
  • Fixed a concurrency issue in the HTTP SessionManager.
  • Fixed a concurrency issue in caching Query results in the REST Server.
  • Fixed a concurrency issue in caching Query results in the XML-RPC Server.
  • Fixed the function description of util:eval-with-context.
  • Improved error reporting when loading extension modules and EXPath packages.
  • fn:format-number now returns correct error code: FODF1310.
  • Fixed decimal formatting in fn:format-number.
  • Fixed QName equality comparison error code, to correctly return XPTY0004.
  • fn:analyze-string now adheres to XQuery Regular Expression syntax and not the wider Java Regular Expression syntax.
  • fn:doc-available now only raises FODC0005 if the supplied URI is invalid.
  • Fixed Font Resolution when using Apache FOP via XSL-FO extension module.
  • Fixed a StackOverflowException in the History Trigger.
  • Fix to ensure that only signed dependencies end-up in the WAR build.

Backwards Compatibility

  • eXist-db v3.6.0 is backwards binary-compatible as far as v3.0, but not with earlier versions. Users who are upgrading should always consult the Upgrading Guide in the documentation.

Downloading This Version

  • eXist-db v3.6.0 is available for download from Bintray.
  • Docker images for are available from EvolvedBinary's DockerHub.
  • Maven artifacts are available from our mvn-repo.
  • Mac users of the Homebrew package repository may acquire eXist 3.6.0 directly from there.