eXist-db Changelog

What's new in eXist-db 5.3.0

Jun 30, 2021
  • XQuery 3.1 compatibility:
  • Improved handling of the XQuery type system - #3363, #3266, #3728, #3791
  • Function types are now allowed as values in context item expressions
  • Duplicate functions will reliably throw a useful error
  • Root context is shielded from user defined functions
  • Several fixes for positional predicates
  • When errors are thrown in XQuery most of them will now have useful location information
  • Fixed parser issues to allow empty function body, and allow || in attribute and element content
  • Allow other seed types in fn:random-number-generator (like dates) - #3072
  • Fixed the cardinality of fn:random-number-generator#1 - #3249
  • Improved fn:format-number - #3348
  • Made fn:collection spec compliant - #3349
  • Allow sequences for batch deletions in map:remove and array:remove - #3328, #3692
  • New functions added:
  • array:sort - #3596
  • fn:document-uri#0 - #3644
  • fn:trace#1 - #3597
  • fn:xml-to-json - #3141
  • Other important additions:
  • Module handling and caching was improved significantly
  • Both controller.xq and controller.xql are now recognized in apps that use eXist's URL Rewriting facility, to conform with the community convention of .xq for main modules and .xqm for library modules.
  • The implementation of maps was changed to gain performance
  • Allow Bearer tokens and other schemes than "Basic" in Authentication header
  • Allow HTTP verb PATCH
  • Custom base64 handling code was replaced with apache.commons code and a new function util:base64-encode-url-safe was added
  • Enhanced util:eval to preserve the original error information
  • In Lucene, you can now use different analyzers for indexing and querying
  • Bundled apps:
  • All bundled applications have their frontend dependencies updated.
  • The index view in monex now lists new fields and facets - #124.
  • The shared resources and markdown packages are no longer bundled with eXist-db. If your application depends on those you can still declare dependencies on them in your package metadata and download them from the package repository.

New in eXist-db 5.0.0 RC 3 (Aug 28, 2018)

  • Features:
  • Added a build target for a .tar.bz2 distribution.
  • Bug fixes:
  • Fixed a problem with Backups performed via the XML:DB Remote API.
  • Fixed a problem where Shutdown on Windows was prevented by the Lock Table event processor.
  • Fixed a problem with variables used by the IzPack installer for the Java Service Wrapper.
  • Fixed a problem with quotes in Windows paths used in the IzPack installer.
  • Made sure that the IzPack installer checks for Java 8.
  • Updated the function documentation for scheduling jobs via XQuery to reflect that they are not persistent across database restarts.
  • Fixed the IzPack description in build.properties.
  • Improved the logging in the Plugins Manager.

New in eXist-db 4.3.1 (Aug 28, 2018)

  • BUG FIXES:
  • Fixed a regression introduced in eXist-db 4.3.0, where the type conversion of non-empty XDM Sequences was incorrectly returning an empty sequence. This could lead to insufficient results being returned by an XQuery.
  • Reverted Apache Xerces 2.12.0 to 2.11.0. This fixes a regression introduced in eXist-db 4.3.0, whereby Xerces 2.12.0 proved to be incompatible with betteForm. Apache Xerces 2.12.0 is available in eXist-db 5.0.0-SNAPSHOT, and will be available from eXist-db 5.0.0-RC2 onwards.
  • Fixed another problem with uploading zero length binary files via. the XML:DB Remote API.
  • Fixed an issue where the XQuery function file:serialize could use the incorrect character encoding depending on which platform eXist-db was being executed on.
  • Fixed a comparison problem with node equality in the DOM API exposed via. the XML:DB Local API.
  • Fixed a java.nio.file.Path issue when loading eXist-db's conf.xml file from inside a classpath Jar file.
  • Removed unnecessary error level logging of the XQuery fn:error function.
  • Fixed an issue with the error message for restoring permissions; Now the entire resource URI is shown.
  • Fixed an initialise/reset issue with Internal Module XQuery variables. This fixed a regression introduced in eXist-db 3.5.0.
  • Fixed a JavaEE dependency runtime issue with Java 11.
  • Downloading of XAR files during the eXist-db build process is now more descriptive.
  • Fixed a number of issues with the LDAP Security Realm:
  • Ensure the authenticated LDAP context is reused.
  • Always close and dispose of any LDAP context that we create.
  • Fixed encoding of CN and DN names during LDAP searches.

New in eXist-db 3.1.1 (Mar 23, 2017)

  • Highlights:
  • fixed command line parameters for backup/restore and the Java admin client (partially broken in 3.1.0)
  • closed memory leak in XQuery map constructor
  • closed memory leak preventing memory used for accessing binary resources in XQuery being freed
  • added missing dependencies for YAJSW when installing as a System-V service
  • corrected fn:doc-available() to return false(), not FODC0005, when the remote resource does not return a document node
  • prevented an NPE when an account or a group can't be found by id due to storage corruption or a missing account or group

New in eXist-db 2.2 (Nov 21, 2014)

  • We've been busy since the summer to test and improve everything, so here it is: eXist-db 2.2 final is out! We think this is a major step forward in many areas. To just highlight a few:
  • NEW RANGE INDEX:
  • the most important user-configurable index in eXist has been entirely rewritten for scalability and performance, now using Apache Lucene:
  • many times faster on large data sets
  • xpath expressions using multiple filters are optimized into a single index lookup
  • updates and queries scale very well with growing collection size
  • APP UPDATES:
  • eXide 2.1.2 is more robust than ever and has many new features
  • monex: a new app for monitoring and profiling eXist-db
  • Extended the security model, now including setUid and setGid, to temporarily escalate permissions inside an application in a safe way
  • Improved crash recovery leading to a more robust recovery procedure and smaller transaction logs
  • Enhancements to the query engine and optimizer leading to improved overall performance, in particular for queries using indexes
  • FOR THOSE UPGRADING FROM 2.2-RC1 OR 2.2-RC2, THE MAIN CHANGES IN 2.2 FINAL ARE:
  • improvements to backup/restore: sometimes a restore led to duplicate user accounts or invalid user IDs
  • many improvements to the new range index based on user feedback (thanks!)
  • map support in query engine aligned with XQuery 3.1 specification
  • closed memory leaks

New in eXist-db 2.1 RC 1 (Feb 25, 2014)

  • Bug Fix:
  • [bugfix] Fixed wrong sequence type checks for nodes, e.g. when passing function arguments. May reveal XQuery coding errors which were previously ignored by eXist-db!
  • [bugfix] Try-catch: catch expressions need to be analyzed. Warning: may reveal hidden errors in XQueries which previously compiled.
  • [bugfix] "stable" was treated as a reserved keyword and could not be used in xpath expressions or xml fragments.
  • [bugfix] Added -Dfile.encoding=UTF-8 in vm.properties to fix rare encoding issues on some machines.
  • [bugfix] Allow "math" namespace to be overwritten (it has the same status as the function namespace in XQuery 3).
  • [bugfix] Allow restxq access to Query parameters from any HTTP method (was previously limited to GET)
  • [bugfix] Applied password ant task patch #807.
  • [bugfix] Applied patches #819, #820 and #821: Race condition(s) and missing unlocks on failure in BrokerPool. FileSyncThread may access null endOfLog. On some error conditions Journal channel may be null which was not checked.
  • [bugfix] Avoid NPE in ft:get-field if document does not exist.
  • [bugfix] Disabled left mouse click on system tray icon in GNU/Linux which otherwise leads to display issues.
  • [bugfix] Fix for self axis in filter step.
  • [bugfix] Fixed "cannot convert xs:boolean('false') to a node set" issue in filter using OR with empty node set, e.g. /blah[a='A' or b='B']. Test added.
  • [bugfix] Fixed unintended removal of ACLs in some cases.
  • [bugfix] File module: file:sync should preserve comments and processing instructions and also not expand xincludes.
  • [bugfix] Fixed caching in XQueryURLRewrite. Cache was not used when it should have been.
  • [bugfix] Fixed changing permissions on copy of document making original document permissions change too.
  • [bugfix] Fixed database corruption in Replication extension
  • [bugfix] Fixed issue with last() used in sequence of filters.
  • [bugfix] Fixed math:pow() and math:exp10() functions.
  • [bugfix] Fixed memory leak in higher-order functions.
  • [bugfix] Fixed regression: document set not being sorted by root expression caused missing results.
  • [bugfix] Fixed regression: wrong return type computation leads to wrong results in for-where expression.
  • [bugfix] Fixed wrong dependency computation for where expressions involving a boolean operator.
  • [bugfix] Fixed XQuery error reporting.
  • [bugfix] Fixed: last() returns incorrect position when used in a primary expression combined with a filter.
  • [bugfix] Ignore integer value if catch format exception
  • [bugfix] Improve error reporting from XQuery parser.
  • [bugfix] KWIC module: Made configuration optional missing.
  • [bugfix] Make compress module functions e.g. compress:zip() obey exist:serialize option parameters like indent for XML resources.
  • [bugfix] Make sure the StatusReporter thread used during db initialization terminates even if there were errors.
  • [bugfix] Make the wrapper work with Java6u51 on MacOSX.
  • [bugfix] Optimizer did not descend into "order by" or "group by" clause of a FLWOR.
  • [bugfix] Optimizer failed to properly rewrite if-then-else.
  • [bugfix] Package manager: enforce dependencies: warn user if package dependency could not be resolved or a wrong version of the required package is currently installed.
  • [bugfix] Properly close transactions if unexpected errors happen. Hanging transactions may otherwise result in data loss.
  • [bugfix] Refactored bugfix to also apply dynamic serialization options to stored documents for use with compression:zip() function et al.
  • [bugfix] Request module: request:get-data should preserve comments and processing instructions when parsing XML.
  • [bugfix] static-base-uri() should not throw an exception, return empty sequence instead. Fix for #811.
  • [bugfix] Setting Content-Length allows download large ZIP backup files.
  • [bugfix] Try to improve memory usage. Only read the stream once and cache the result in constant memory use.
  • [bugfix] Uppercase-conversion must be done with the English locale; it causes a problem for e.g. Turkish Locale.
  • [bugfix] When creating a range index on long keys (> 1k) and a large data set, parts of the index btree became unreachable. While this is a rare and highly random error, it may result in wrong query results over time. Fix: changed the btree page split algorithm to take the real size of the keys into account, so if one of the keys is close to the max. page size, it will be moved into its own page.
  • [bugfix] XQuery triggers: set module load path relative to location of trigger script, so relative import paths can be resolved.
  • New features:
  • [feature] Added support for the SpiderWebChart type in the jfreechart module.
  • [feature] Added a MicroXML Serializer
  • [feature] Added community-built binaries of the windows 64bit community version of the wrapper.
  • [feature] Added configuration dialog to system tray launcher to make it easier for new users to configure memory, cache and data directory settings.
  • [feature] Added restxq %rest:header-param %rest:cookie-param
  • [feature] Added restxq support for %output:indent and %output:omit-xml-declaration
  • [feature] Added further restxq eXist-db specific functions for registering/de-registering Resource functions.
  • [feature] Full text index: allow option diacritics="yes|no" for diacritics folding and choose default analyzer accordingly.
  • [feature] Package manager: warning about unresolved dependency should tell you which package version is missing.
  • [feature] Replication extension: do not require to set client-id for publisher, do require client-id to be set for subscriber at durable subscriptions